Perl使用系统提取tar
我试图提取一个包含tar文件的目录,但它似乎无法正常工作。 该命令在命令行中工作,但不能与perl中的“系统”一起工作。我真的需要它在perl中工作Perl使用系统提取tar,perl,Perl,我试图提取一个包含tar文件的目录,但它似乎无法正常工作。 该命令在命令行中工作,但不能与perl中的“系统”一起工作。我真的需要它在perl中工作 $tar_dir = "/root/updates/*.tar.bz2"; system ("for i in $tar_dir ; do tar xvfj $i; done"); 在命令行上的工作方式如下:用于*.bz2中的i;做焦油xvfj$i;完成 我错过什么了吗 谢谢是的,您忘了在perl中转义字符串中的$i 尝试: 如果您不逃避它,那么
$tar_dir = "/root/updates/*.tar.bz2";
system ("for i in $tar_dir ; do tar xvfj $i; done");
在命令行上的工作方式如下:用于*.bz2中的i;做焦油xvfj$i;完成
我错过什么了吗
谢谢是的,您忘了在perl中转义字符串中的
$i
尝试:
如果您不逃避它,那么它将像
$tar\u dir
一样展开。确保你的使用严格代码>和使用警告
在perl脚本的顶部,它将对这类事情有所帮助(如果在本例中,perl脚本中没有定义$i
,您将收到一条来自perl的消息,告诉您这个问题。)或者,您可以将循环移动到perl代码中:
use warnings;
use strict;
for (glob '/root/updates/*.tar.bz2') {
system "tar xvfj $_";
}
更好的方法是,使用系统“tar”、“xvjf”和$\。(详情请参见)非常感谢。这两个答案都有效,既然你说toolic显示了一个更好的选择,我将使用他的:)。感谢提醒您使用“严格”和“警告”。
use warnings;
use strict;
for (glob '/root/updates/*.tar.bz2') {
system "tar xvfj $_";
}