Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl使用系统提取tar_Perl - Fatal编程技术网

Perl使用系统提取tar

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文件的目录,但它似乎无法正常工作。 该命令在命令行中工作,但不能与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\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 $_";
}