如何在perl脚本中向终端发送命令?
例如,如果我想在控制台中运行命令mkdir $directory
,我在perl脚本中输入什么内容?
答案 0 :(得分:5)
要从perl脚本执行任何系统命令,您需要使用带反引号的系统命令
例如
在创建目录的情况下,您需要输入
系统(mkdir $directory
); #note html没有显示反引号,但是在mkdir和$ directory之后是反引号的地方
它将以$ directory
的名义在当前工作目录中创建一个目录答案 1 :(得分:4)
在http://perldoc.perl.org/functions/system.html的文档中建模示例代码:
@args = ("mkdir", $directory);
system(@args) == 0
or die "mkdir failed";
Perl可以在没有system()
调用的情况下创建目录,但我假设您要做其他事情并且只是使用mkdir作为示例。
答案 2 :(得分:4)
由于Perl内置了mkdir()
系统调用,因此您根本不需要使用system
命令:
my $directory = "...";
if (mkdir $directory)
{
croak "Failed to create directory $directory ($!)";
}
如果您必须使用system
,请以安全的方式执行此操作:
if (system "mkdir", $directory)
{
croak "Failed to create directory $directory";
}
这种形式的system
语句(带有参数列表)避免了shell扩展的问题。
答案 3 :(得分:0)
使用perl命令而不是依赖shell命令。 perl可以执行很多操作,如果它还不是built in或core module,则可能会在CPAN上提供。
正如人们所提到的那样,mkdir
可用,basic file related commands的大多数都是可用的。
话虽如此,这是perl中shell命令的污垢:
您希望perl脚本: