我正在尝试找到在Perl中解压缩.Z文件的最佳方法。使用IO::Uncompress:Gunzip和Archive::Extract都会显示相同的行为。因为这两个报告都没有失败,并且它们确实生成了一个输出文件 - 尽管它们生成的输出文件仍然是一个压缩文件(可以使用Unix gzip -d <filename>
解压缩)。
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
my $status = gunzip 'file.16.Z' => 'file.16' or die "failed: $GunzipError";
或
use Archive::Extract;
my $ae = Archive::Extract->new(archive => 'file.16.Z');
$ae->extract(to => 'file.16') or die $ae->error;
在Perl中解压缩.Z文件的最佳方法是什么?是仅仅进行系统调用并使用gzip
?
答案 0 :(得分:2)
使用过时的 <?php
//divide route path
echo "<br>" .$route_path."</br>";
$hop = explode(">",$route_path);
$hop_count = count($hop)-1;
//maximum number of path columns in the database
$maxPath=9;
$lastIndex = 0;
for($i=0; $i<=$maxPath; $i++)
{
if($i<=$hop_count)
{
$path[$i] = $hop[$i];
$lastIndex = $i;
}
else
{
$path[$i] = null;
}
}
$path[$lastIndex+1] = $router_name;
for($i=1; $i<=$maxPath; $i++)
{
if($path[$i] != NULL)
{
$hop_route[$i-1] = $path[$i-1].'>'.$path[$i];
echo $hop_route[$i-1].'<br/>';
}
else
{
$hop_route[$i-1] = NULL;
}
}
//inserting into database
$sql1 = "INSERT INTO hop (hop_id, hop_1_route, hop_2_route, hop_3_route, hop_4_route, hop_5_route, hop_6_route, hop_7_route, hop_8_route, hop_9_route, hop_count, site_name) VALUES ('', '".$hop_route[0]."', '".$hop_route[1]."', '".$hop_route[2]."', '".$hop_route[3]."', '".$hop_route[4]."', '".$hop_route[5]."', '".$hop_route[6]."', '".$hop_route[7]."', '".$hop_route[8]."', '".$hop_count."', '".$site_name."')";
if ($conn->query($sql1) === TRUE)
{
//echo "New record created successfully";
}
else
{
echo "Error: " . $sql1 . "<br>" . $conn->error;
}
实用程序创建Point = Struct.new(:x, :y)
point_a = Point.new(0,0)
point_b = Point.new(2,3)
class Point
def distance_to another_point
Math.sqrt((self.x - another_point.x)**2 + (self.y - another_point.y)**2)
end
end
puts point_a.distance_to point_b
文件,而不是gzip。 (.Z
比gzip早了近十年。)
如果有办法在Perl中解压缩这些,我就不知道了。使用compress
命令。
答案 1 :(得分:2)
.Z
个文件未被gzip压缩。他们的Lempel-Ziv用compress
编码。它仍然相对流行,文件格式内部(如GIF)和数据存储方案。您使用它的标准库是zlib
,它应响铃。我有点困惑,认为IO::Uncompress::Inflate
应该有效,但它不是正确的格式。
你也被gunzip
甩掉了,因为正如手册页所说,gzip
的最新版本是:
还能够解压缩压缩的文件 使用compress(1)或bzip2(1)。
但这并不代表IO::Uncompress::Gunzip
模块可行。
你的代码大多是正确的。
我认为采用普通短文本文件,使用compress text.txt
进行压缩,获取text.txt.Z
然后使用AnyUncompress
perl模块进行记录是一项简单的任务,或AnyInflate
modlue。但实际上我得到了你描述的相同行为,所以看起来不支持这种格式。
perl -MIO::Uncompress::AnyUncompress=anyuncompress,\$AnyUncompressError -e\
'my $z = new IO::Uncompress::AnyUncompress "text.txt.Z" '\
'or die "failed $AnyUncompressError";while(<$z>){print};'