如何将shell脚本函数转换为perl脚本
我有一个perl函数,我想在vmstat之后调用它:如何将shell脚本函数转换为perl脚本,perl,Perl,我有一个perl函数,我想在vmstat之后调用它: sub insert_datetime{ while($line = <>) { do print($line); if($line =~ /[0-9].*/) { `date '+ %m-%d-%Y %H:%M:%S'`; } els
sub insert_datetime{
while($line = <>) {
do
print($line);
if($line =~ /[0-9].*/)
{
`date '+ %m-%d-%Y %H:%M:%S'`;
}
else
{
print("\n")
}
}
}
我知道您需要在perl中支持unix命令。如果unix命令的输出需要通过管道传输到perl子系统,该怎么办 它对火箭科学的要求不高:
#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw(strftime);
while (<>)
{
chomp;
$_ .= strftime(' %m-%d-%Y %H:%M:%S', localtime(time)) if ($_ !~ m/^\d/);
print "$_\n";
}
#/usr/bin/perl
严格使用;
使用警告;
使用POSIXQW(strftime);
而()
{
咀嚼;
$\.=strftime(“%m-%d-%Y%H:%m:%S”,localtime(time))如果($\!~m/^\d/);
打印“$\u\n”;
}
1)因此不是代码编写服务。2) 如果你说了它的实际功能,会有所帮助。日期算术?3) 可以用来做日期算术试着自己写一些东西,如果不起作用,把它带给我们帮助你。你开始,我们帮助。我们不是为你写的。向我们展示您尝试过的实际代码,然后我们可以从中帮助您。如果你先自己尝试一下,很可能你会非常接近答案。@Andy Lester,我真的很抱歉。是的,你说得对。我已经更新了我原来的帖子。@Jonathoan Leffler,我已经创建了一个名为“最新”的sub cand,并在“最新”中插入了您的代码。当我这样做时vmstat-iwt30 | latest>vmstat.log&
;我得到了最新的未找到错误。我这样做对吗?将代码原样保存在名为latest
的文件中,并在我尝试运行时在perl脚本中使用chmod u+x latest
latest是一个函数:`nohup vmstat-Iwt 30 2884 | latest>vmstat_log',它不起作用。其思想是,每次运行vmstat命令时,我都需要在每行末尾插入datetime。当我运行这个程序时,我得到了最新的找不到的错误。Shell脚本运行命令,这些命令在普通程序中(当它们不是别名或Shell函数时);程序是文件。因此,您最新的必须是shell可以运行的程序;这反过来需要在$PATH
上的目录中有一个文件最新的
。如果您想要一个shell函数,您可以创建一个包含Perl脚本的函数;它可能被压缩到几乎一行,虽然我个人不这么做(但人们似乎喜欢shell函数)。
#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw(strftime);
while (<>)
{
chomp;
$_ .= strftime(' %m-%d-%Y %H:%M:%S', localtime(time)) if ($_ !~ m/^\d/);
print "$_\n";
}