标签: perl

Perl 在脚本中就地编辑

我需要在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)

我的印刷品正好显示了我想要的东西。这只是我正在寻找的就地编辑。

regex perl

3
推荐指数
1
解决办法
7235
查看次数

关闭 Web 浏览器后,如何让 Apache 完成运行 Perl 脚本?

我有一个 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 那么我将有时间更彻底地重写这个脚本.

iis perl apache-2.2

3
推荐指数
1
解决办法
246
查看次数

在 FreeBSD 9 上使用端口系统将我现有的 Perl 5.14 升级到 Perl 5.16 的最简单方法是什么?

我在 FreeBSD 上使用端口系统。使用端口升级 Perl 的最简单方法是什么?我目前卸载了所有 perl 及其依赖项。我认为会有一种很酷的方式来升级 Perl 及其所有依赖项。那会是什么?

freebsd perl

3
推荐指数
1
解决办法
8081
查看次数

如何进行无人值守/静默 CPAN 安装/设置

有没有一种简单的、向后兼容的方法来使用 CPAN 静默安装 Perl 模块?

PERL_MM_USE_DEFAULT不适用于未检测到默认大陆的旧版本;CPAN 将在

对不起!由于您没有任何现有选择,因此您必须进行地理选择。

见CPAN::FirstTime。

可以使用 Perl 片段来加载 CPAN 并对其进行配置,但这既冗长又丑陋。

unattended silent perl cpan

3
推荐指数
1
解决办法
1299
查看次数

如何在 Ubuntu 9.04 桌面安装上设置测试平台 LAMP 堆栈?

从 Ubuntu 9.04 桌面安装开始设置 Apache/MySQL/Perl CGI 环境的最佳方法是什么?我希望能够在 VM 内或在“真实”安装中执行此操作,如果这有任何区别的话。

我应该安装哪些软件包,是否有任何特定的配置指南可能对我有用?

ubuntu lamp ubuntu-9.04 perl

2
推荐指数
1
解决办法
232
查看次数

如何查找仅包含一个文件的目录?

有谁知道如何在数千个子目录中搜索仅包含 1 个文件且不超过 1 个文件的所有目录?

关于使用什么工具或简单的代码片段的任何建议?

powershell perl

2
推荐指数
1
解决办法
7430
查看次数

如果 bash 脚本带有不正确的解释器路径怎么办?

我正在尝试在我们的服务器上安装 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)

scripting installation bash perl

2
推荐指数
1
解决办法
3900
查看次数

CentOS 5.3、Perl、bash 命令、隐藏所有输出到屏幕

我正在运行以下命令:

[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 和其他一些命令也执行此操作,我真的很想弄清楚如何抑制这种不必要的输出。

perl stderr stdin stdout

2
推荐指数
1
解决办法
726
查看次数

bash + 在 bash 中每 10 分钟打印一次

我想每 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)

linux bash perl shell-scripting

2
推荐指数
1
解决办法
4751
查看次数

WWW::Mechanize Perl 模块不会安装在服务器上

我想弄清楚为什么 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)

linux debian perl cpan ubuntu-16.04

2
推荐指数
1
解决办法
529
查看次数