Я пытаюсь получить какую-то строку из моего набора данных.
#!/usr/local/bin/perl
use Date::Calc qw(Add_Delta_Days);
my @just_ecps;
my @folder_dates;
my @ecp_dot_tee_array = `grep ISLAND ~/data/files/grit.t`;
foreach (@ecp_dot_tee_array){
($ecp, undef, undef, undef, undef, undef) = split (/\s+/, $_);
push (@just_ecps, $ecp);
}
for ($h = 1; $h <= 5; $h++){
my (undef, undef, undef, $day, $month, $year) = localtime();
$year+=1900;
$month+=1;
($year, $month, $day) = Add_Delta_Days($year, $month, $day, -$h );
if ($month < 10 ){
$month = "0$month";
}
if ($day < 10 ){
$day = "0$day";
}
push (@folder_dates, "$year$month$day");
}
for ( $j=0; $j <=$#just_ecps ; $j++){
for ($x=0; $x<=$#folder_dates ; $x++){
open FILEHANDLE , "zmore /data/ibprod/archive/$folder_dates[$x]/$just_ecps[$j] /ghistogram.gz | ";
@archive_average = (<FILEHANDLE>);
foreach $line(@archive_average){
if ($line =~ /ave:\s+(\d+\.\d+)\s/){
print $1;
sleep 1;
print "\n";
}
}
}
}
Это то, что я получаю, когда запускаю программу - я пытаюсь получить 'не могу прочитать> файлы из набора данных
% ./read_in_ghistogram2
0.00414601
0.0044511
0.00387373
/usr/bin/zmore: line 52: /home/data/archive/20110814/islnd1/ghistogram.gz: No such file or directory
/usr/bin/zmore: line 52: /home/data/archive/20110813/islnd1/ghistogram.gz: No such file or directory
0.00309721
0.00302753
0.00307702
/usr/bin/zmore: line 52: /home/data/archive/20110814/islnd2/ghistogram.gz: No such file or directory
/usr/bin/zmore: line 52: /home/data/archive/20110813/islnd2/ghistogram.gz: No such file or directory
0.00324729
0.00295381
0.00301736
/usr/bin/zmore: line 52: /home/data/archive/20110814/islnd3/ghistogram.gz: No such file or directory
/usr/bin/zmore: line 52: /home/data/archive/20110813/islnd3/ghistogram.gz: No such file or directory
Я попытался отфильтровать ихвне цикла while, но он не работает, и в программе нет строки 52, он идет только к 42
for ( $j=0; $j <=$#just_ecps ; $j++){
for ($x=0; $x<=$#folder_dates ; $x++){
#print "/home/ibprod_archive/$folder_dates[$x]/$just_ecps[$j]/ghistogram.gz";
open FILEHANDLE , "zmore /data/archive/$folder_dates[$x]/$just_ecps[$j]/ghistogram.gz | ";
while (<FILEHANDLE>) {
next if ($_ =~ '/No such file or directory/');
push (@archive_average,$_);
foreach $line(@archive_average){
if ($line =~ /\save:\s+(\d+\.\d+)\s/){
print $line;
sleep 1;
}
}
}
}