perl - 将参数作为单独的参数提供给使用 Perl 的系统调用是否有任何用处?

标签 perl

在 Unix 上,所有这三个生成相同的结果

system("top -H -p $pid -n 1");             #ver1
system("top", "H", "p $pid", "n 1");       #ver2
system("top", "-H", "-p $pid", "-n 1");    #ver3
  • 有什么区别ver2 ver3 ?
  • 我有什么理由应该使用 ver2 ver3 ,而不是 ver1 ?
  • 他们甚至不支持管道结果,例如,是否有 ver2 ver3 相当于以下调用?
    system("top -H -p $pid -n 1 | grep myprocess | wc -l");
    
  • 最佳答案

    即使看起来一样,它也不一样:

    $ perl -e 'system("./test.pl -H -p $$ -n 1");system("./test.pl", "H", "p $$", "n 1");system("./test.pl", "-H", "-p $$", "-n 1");'
    -H,-p,10497,-n,1
    H,p 10497,n 1
    -H,-p 10497,-n 1
    $ cat ./test.pl 
    #!/usr/bin/perl
    $\="\n";
    $,=",";
    print @ARGV;
    

    高达top实现它的工作原理相同。其他应用程序可能无法正常工作。

    关于perl - 将参数作为单独的参数提供给使用 Perl 的系统调用是否有任何用处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3854753/

    相关文章:

    regex - 删除仅包含特定字符串的重复行

    perl - 更好的 CLI Tumblr 工具

    regex - 在正则表达式中回溯比预期更快

    Perl DBI-捕获错误

    linux - Perl 中的“If” 'else' 语句

    perl - 我可以使用 <> 运算符跳过整个文件吗?

    c++ - XML::CanonicalizeXML Perl 包安装在 Windows 上

    windows - Perl Net::SSH2 scp_put 放入文件然后挂起

    linux - 安装 WWW::HtmlUnit 时找不到“类 com.gargoylesoftware.htmlunit.WebClient”

    perl - 如何在 Perl 中从字符串中提取数字?