2016-06-30 7 views
1
my $path="/mnt/splash/logs/"; 
my $serv= sprintf("splash-%s-%02d%02d%02d-%s",$server,$year,$mon,$date,$hourStart); 
my $eserv= sprintf("splash-%s-%02d%02d%02d-%s",$server,$eyear,$emon,$edate,$hourEnd); 
print $serv; 
print $eserv; 
#OPEN THE SPLASH LOGS DIRECTORY AND READ THE FILES PRESENT THEN STORE IT IN ARRAY. 

my $remote_dir=sprintf("ssh %s 'ls %s'",$server,$path); 
chomp $remote_dir; 
my @list=`$remote_dir`; 

#FINDING THE ONLY SPLASH LOGS FILES FROM THE DIRECTORY AND STORED IN AN ARRAY USING PUSH METHOD. 
my @srt_list= sort @list; 
my @arlist=(); 
my @arrlog=(); 
my $i=0; 
my $filt; 
for(@srt_list) { 
    if ($_ ge $serv && $_ le $eserv) { 
     #my $filter= sprintf("$_\n"); 
     chomp $_; 

     push (@arrlog, $_); 
    } 
} 

上記は、アレイからログを取得するために使用されたperlコードです。 geleの演算子を使用してifの条件を使用しましたが、20160628-0400.logから20160629-1000.logまでのログファイルを検索した場合、このコードは20160628-0400.logから20160629-0900.logにログを提供しています終了時刻ログが検索しているログ20160629-1000.logを検索しません。私はこれがどうやってle演算子を使ったのか分かりません。つまり、logより小さいか同等のログを選択すべきですか?「より小さい」演算子が条件で動作しない場合

これを明確にしてください。私は本当に終了時間のログを取得するために他のチェックを追加したくない。

+0

'' はい、両方 '<='と '壊れていると誰もがnow.'までそれに気づいていなかったle'':

簡単な修正は、接尾辞を取り除くことであろう –

答えて

3

入力データを見ることなく、私は推測する必要があります。

しかし、あなたが持っているものから、私はあなたが比較している推測している:

20160629-100020160629-1000.log

接尾辞で終わりには、それがアルファベット順に「大きい」になります。

print "yes" if "20160629-1000" le "20160629-1000.log"; 
print "no" if "20160629-1000.log" le "20160629-1000"; 

leは文字列での比較であり、数値ではないためです。

for (@srt_list) { 
    my ($compare) = m/(splash.*[\d\-]+)\.log/; 
    print "Comparing $compare with $serv and $eserv\n";  
    if ($compare ge $serv && $compare le $eserv) { 
     chomp $_; 

     push (@arrlog, $_); 
    } 
} 
関連する問題