我需要在perl 脚本中就地编辑一个文件,所以经常使用一个班轮:
perl -p -e s/<value>/<value>/ig
Run Code Online (Sandbox Code Playgroud)
不适用于这种情况。如何从 perl 脚本中获得相同的结果?
open(CRONTAB, "+<file" || die "...";
while (<CRONTAB>) {
if ($_ =~ /value/) {
s/^\#+//;
print "$_\n";
}
}
Run Code Online (Sandbox Code Playgroud)
我的印刷品正好显示了我想要的东西。这只是我正在寻找的就地编辑。
我有一个 Perl 脚本,它由最终用户单击 Web 浏览器中的快捷方式激活。该脚本遍历哈希值列表。当每次迭代将一行插入数据库时,它会向浏览器输出一些 HTML。环境为 Perl、Windows Server 2003 标准版、IIS。我最近迁移到 Apache。传统上迭代次数很少,大多数用户在页面加载完成后关闭浏览器。现在,我们有一个案例,其中有多达 5000 次迭代。现在执行这 5000 次迭代需要很长时间(1 分钟~)。那不是问题。问题在于,当用户关闭 Web 浏览器时,Apache 会终止 Perl 脚本,并且我们没有完成将行插入数据库的过程,因为浏览器不会确认最近发送的 html。我在 IIS 下对此进行了测试,在用户关闭 Web 浏览器后,Perl 脚本继续运行并插入所有行。Apache 配置文件中是否有一个设置会强制 Apache 完成运行 Perl 脚本,即使在浏览器关闭并删除套接字后?
这就是我们正在做的:
foreach my $Destination (sort keys %{$self->{_Destinations}}) {
print qq! <td $self->{_bgcolor}>$Destination Queued</td> !;
if ($self->{_Data}->Execute(@params)) {&error}
}
Run Code Online (Sandbox Code Playgroud)
我知道我们应该做所有的数据库插入然后做我们的打印,但这是遗留代码,如果我能让 Apache 在这方面表现得像 IIS 那么我将有时间更彻底地重写这个脚本.
我在 FreeBSD 上使用端口系统。使用端口升级 Perl 的最简单方法是什么?我目前卸载了所有 perl 及其依赖项。我认为会有一种很酷的方式来升级 Perl 及其所有依赖项。那会是什么?
有没有一种简单的、向后兼容的方法来使用 CPAN 静默安装 Perl 模块?
PERL_MM_USE_DEFAULT不适用于未检测到默认大陆的旧版本;CPAN 将在
对不起!由于您没有任何现有选择,因此您必须进行地理选择。
可以使用 Perl 片段来加载 CPAN 并对其进行配置,但这既冗长又丑陋。
从 Ubuntu 9.04 桌面安装开始设置 Apache/MySQL/Perl CGI 环境的最佳方法是什么?我希望能够在 VM 内或在“真实”安装中执行此操作,如果这有任何区别的话。
我应该安装哪些软件包,是否有任何特定的配置指南可能对我有用?
有谁知道如何在数千个子目录中搜索仅包含 1 个文件且不超过 1 个文件的所有目录?
关于使用什么工具或简单的代码片段的任何建议?
我正在尝试在我们的服务器上安装 BugZilla。问题是 BugZilla 的 perl 脚本将路径定义为/usr/bin/perl,而我的 perl 安装位于/usr/local/bin/perl.
我在安装其他应用程序时也遇到了这个问题,我不得不手动编辑解释器路径。
你是如何处理这样的情况的?
编辑:我刚刚注意到我们在服务器上有两个 perl 副本,一个在标准位置,在 /usr/local/bin/perl 中,但which perl返回前一个路径。
顺便说一句,这是我运行 bugzilla 的 perl 脚本时遇到的错误
bash: ./checksetup.pl: /usr/bin/perl: bad interpreter: Permission denied
Run Code Online (Sandbox Code Playgroud) 我正在运行以下命令:
[user@server ~]$ /usr/sbin/ntpdate -d IPREMOVEDFORSECURITY | egrep 'transmit timestamp' | tail -1 | awk '{print $4, $5, $6, $7, $8}'
host found : HOSTREMOVEDFORSECURITY
Tue, Feb 15 2011 12:38:38.321
Run Code Online (Sandbox Code Playgroud)
所以问题是,无论我使用哪种类型的重定向,我总是得到“找到主机:”行。我尝试了以下方法:
0>/dev/null
1>/dev/null
2>/dev/null
2>&1
2>&/dev/null
Run Code Online (Sandbox Code Playgroud)
以及我能想到的或能够在网上找到的所有其他变体。我需要并希望返回的是该命令输出的第二行(时间戳)。我不明白为什么我似乎无法影响“主机找到:”行?!?!
我通过 perl 运行这些命令,但是在 bash 中直接运行它们时我看到了相同的行为。我需要抑制该 host: 行,因为在 perl 中,我使用反引号运行命令将输出分配给变量,并根据其他一些条件输出干净的响应。无论如何,该主机行显示并混淆了我的脚本输出,尽管它不会影响实际分配给变量的内容。
我的假设是这条线没有使用普通的 STDIN、STDOUT、STDERR 线程,但我似乎无法确定关于第 4 种输出方法的任何特定信息。我发现的每个网站都只谈论这三个。
如果有人对此有答案,请告诉我!
PS:这不是显示此行为的唯一命令,chkconfig 和其他一些命令也执行此操作,我真的很想弄清楚如何抑制这种不必要的输出。
我想每 10 分钟通过 echo 打印以下“仍在进行中,再等 10 分钟”
请建议在 echo 命令之前需要添加什么条件才能每 10 分钟打印一次此行?
备注 - 计数器每个周期(1 秒)增加一,我不想在这个脚本中添加额外的延迟(睡眠命令)!!!!!!
Until [ ]
do
Counter=1
sleep 1
let counter=$counter+1
[ .... ] && echo " still in process wait another 10 min …."
done
Run Code Online (Sandbox Code Playgroud) 我想弄清楚为什么 Perl 模块不会安装在我的服务器上。
cpanm WWW::Mechanize
Run Code Online (Sandbox Code Playgroud)
它处理了很长时间的东西,然后最终死亡:
root@admin:~# cpanm WWW::Mechanize
--> Working on WWW::Mechanize
Fetching http://www.cpan.org/authors/id/O/OA/OALDERS/WWW-Mechanize-1.90.tar.gz ... OK
Configuring WWW-Mechanize-1.90 ... OK
Building and testing WWW-Mechanize-1.90 ... FAIL
! Installing WWW::Mechanize failed. See /root/.cpanm/work/1543994046.20570/build.log for details. Retry with --force to force install it.
Run Code Online (Sandbox Code Playgroud)
日志文件中有这样的东西:
t/00-report-prereqs.t .................... ok
t/add_header.t ........................... ok
t/aliases.t .............................. ok
t/area_link.t ............................ ok
t/autocheck.t ............................ ok
t/bad-request.t .......................... ok
t/clone.t ................................ ok
t/content.t .............................. ok
# Test server http://127.0.0.1:31546 as PID 20661
t/cookies.t .............................. ok
t/credentials-api.t ...................... ok …Run Code Online (Sandbox Code Playgroud) perl ×10
bash ×2
cpan ×2
linux ×2
apache-2.2 ×1
debian ×1
freebsd ×1
iis ×1
installation ×1
lamp ×1
powershell ×1
regex ×1
scripting ×1
silent ×1
stderr ×1
stdin ×1
stdout ×1
ubuntu ×1
ubuntu-16.04 ×1
ubuntu-9.04 ×1
unattended ×1