Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将shell脚本函数转换为perl脚本_Perl - Fatal编程技术网

如何将shell脚本函数转换为perl脚本

如何将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

我有一个perl函数,我想在vmstat之后调用它:

  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";
}