我可以在Perl 5中使用system
来运行外部程序。我喜欢将system
想象成Perl中的微型“Linux命令行”。但是,我在Perl 6中找不到system
的文档。等价的是什么?
答案 0 :(得分:8)
Perl6实际上有两个命令可以替换Perl 5中的system
。
在Perl6中,shell
将其参数传递给shell,类似于Perl 5' system
,当它有一个包含元字符的参数时。
在Perl6中,run
试图避免使用shell。它将第一个参数作为命令,其余参数作为该命令的参数,类似于Perl 5的system
,当它有多个参数时。
例如:
shell('ls > file.log.txt'); # Capture output from ls (shell does all the parsing, etc)
run('ls','-l','-r','-t'); # Run ls with -l, -r, and -t flags
run('ls','-lrt'); # Ditto
答案 1 :(得分:5)
除了使用shell
或run
(从Perl 5替换system
)之外,您还可以使用NativeCall
来调用libc system
函数。
在我的Windows框中,它看起来像这样:
use NativeCall;
sub system(Str --> int32) is native("msvcr110.dll") { * };
system("echo 42");