我如何 运行 使用 Perl 6 的外部程序? (例如 Perl 5 中的 "system")
How can I run external programs using Perl 6? (e.g. like "system" in Perl 5)
我可以在 Perl 5 中使用 system
到 运行 外部程序。我喜欢将 system
视为 Perl 中的微型 "Linux command line"。但是,我在 Perl 6 中找不到 system
的文档。什么是等价物?
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
另请参阅此 2014 Perl 6 Advent post on "running external programs"。
除了使用shell
or run
, which replace system
from Perl 5, you can also use NativeCall
调用libcsystem
函数。
在我的 Windows 盒子上,它看起来像这样:
use NativeCall;
sub system(Str --> int32) is native("msvcr110.dll") { * };
system("echo 42");
我可以在 Perl 5 中使用 system
到 运行 外部程序。我喜欢将 system
视为 Perl 中的微型 "Linux command line"。但是,我在 Perl 6 中找不到 system
的文档。什么是等价物?
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
另请参阅此 2014 Perl 6 Advent post on "running external programs"。
除了使用shell
or run
, which replace system
from Perl 5, you can also use NativeCall
调用libcsystem
函数。
在我的 Windows 盒子上,它看起来像这样:
use NativeCall;
sub system(Str --> int32) is native("msvcr110.dll") { * };
system("echo 42");