如何使用Perl ;6.(例如,与Perl中的“system”类似 ;5)
我可以在Perl 5中使用如何使用Perl ;6.(例如,与Perl中的“system”类似 ;5),perl,raku,Perl,Raku,我可以在Perl 5中使用system来运行外部程序。我喜欢把system想象成Perl内部的一个微型“Linux命令行”。但是,我在Perl 6中找不到系统的文档。等价物是什么?Perl6实际上有两个命令,它们取代了perl5 在Perl6中,将其参数传递给shell,类似于perl5的系统,当它有一个包含元字符的参数时 在Perl6中,尝试避免使用shell。它将其第一个参数作为命令,其余参数作为该命令的参数,类似于Perl 5的系统,当它有多个参数时 例如: shell('ls >
system
来运行外部程序。我喜欢把system
想象成Perl内部的一个微型“Linux命令行”。但是,我在Perl 6中找不到系统
的文档。等价物是什么?Perl6实际上有两个命令,它们取代了perl5
在Perl6中,将其参数传递给shell,类似于perl5的系统
,当它有一个包含元字符的参数时
在Perl6中,尝试避免使用shell。它将其第一个参数作为命令,其余参数作为该命令的参数,类似于Perl 5的系统
,当它有多个参数时
例如:
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
另请参见此部分。除了使用或(从Perl 5中替换)之外,还可以使用来调用libc系统
函数
在“我的Windows”框中,它看起来如下所示:
use NativeCall;
sub system(Str --> int32) is native("msvcr110.dll") { * };
system("echo 42");
那
系统
与Perl 5版本基本相同吗?如果必须指定“msvcr110.dll”
,我认为它的可移植性不是很好。您能否向它传递多个参数,如Perl 5的系统(“echo”“42”)
?(我知道Windows不像Unix那样处理命令行参数。)@ChristopherBottoms:不,它是C标准库中的一个;要获得Perl5,您需要@KeithThompson:no,system
需要一个参数-在Windows上,您需要一个函数来避免处理我正在寻找的shell
和run
,但提到NativeCall
会为与操作系统的交互增加另一个维度,我没有考虑到这一点。因此,我认为这是公认的答案。我仍然建议读者也可以快速查看shell
和run
概述和示例。