2017-03-01 30 views
0

私は昨日から複数のlog.gzファイルを解凍したかったのです。log.gzファイルを解凍する

コード:

use strict; 
use warnings; 
use 5.010; 
use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ; 
use Time::Local; 

#yesterday 
my ($sec, $min, $hour, $mday, $mon, $year) = (gmtime())[0..5]; 

my $yesterday_midday=timelocal($sec,$min,$hour,$mday,$mon,$year) - 24*60*60; 

($sec, $min, $hour, $mday, $mon, $year) = localtime($yesterday_midday); 


my $path = sprintf "..\\..\\history\\%d\\%02d\\%02d\\*.log.gz",$year+1900, $mon+1, $mday; 
print("PATH: $path\n"); 

gunzip '<path>' => '<#1.log>' #unzip all .log.gz files 
     or die "gunzip failed: $GunzipError\n"; 

エラー:

Max wild is #0, you tried #1 at D:/Perl64/lib/IO/Uncompress/Base.pm line 545 

答えて

-1

あなたはスカラー$pathを拡張する必要があります。あなたの場合、gunzipに、pathという名前のファイルをワイルドカード出力に解凍するよう指示しています。エラーはの文字列 "path"にワイルドカードが含まれていないことを示していますが、一致するワイルドカードを参照しています(パス文字列にワイルドカードがないため存在しません)。

gunzip "<$path>" => '<#1.log>' #unzip all .log.gz files 
     or die "gunzip failed: $GunzipError\n"; 
+0

がそれを変更しましたが、エラーは同じまま:

はこれを試してみてください。 –

+0

が 'to'に変更されました。ありがとう! –

+0

うんざりです。一重引用符は変数を補間しません。文字通りそのまま文字列を取ります。 –

関連する問題