Здесь вы не соответствуете ни одной из строк при выполнении сопоставления с образцом в строке 18. И даже вы можете уменьшить несколько повторяющихся шагов в коде. Но для вашего удобства я использовал вашу программу.
#!C:\Strawberry\perl\bin
use strict;
use warnings;
my $sSuccessString = "CURRENT_RUN_ID";
open(LOG,"$slogfile") or die("Can't open $slogfile\n");
my $sLines;
{
local $/ = undef;
$sLines=<LOG>;
}
if($sLines =~ m/$sSuccessString/){
open(OUTLOG, ">>test.txt");
print OUTLOG "found current run id in log\n";
print OUTLOG "it is found in log as : $sSuccessString \n";
#if ($sLines =~ m/(CURRENT_RUN_ID=.*)/i) {
#print OUTLOG "<p>" . $1 . "<\/p>\n";
#In below line you need to match the pattern with the line.
if ($sLines=~/CURRENT_RUN_ID=(.*)/){
print OUTLOG "we can now assign run id\n";
my $runVar = $1;
print "$runVar\n";
print OUTLOG "assigned current run id to variable\n";
}
else {
print "run id not assigned\n";
}
}
Я скопировал ваше содержимое файла журнала в одном из моего текстового файла (prog.txt) на моем рабочем столе и запустил скрипт. См. Выход.
#!C:\Strawberry\perl\bin
use strict;
use warnings;
my $sSuccessString = "CURRENT_RUN_ID";
open(LOG,"Prog.txt") or die("Can't open text file\n");
my $sLines;
{
local $/ = undef;
$sLines=<LOG>;
}
if($sLines =~ m/$sSuccessString/){
open(OUTLOG, ">>test.txt");
print OUTLOG "found current run id in log\n";
print OUTLOG "it is found in log as : $sSuccessString \n";
#if ($sLines =~ m/(CURRENT_RUN_ID=.*)/i) {
#print OUTLOG "<p>" . $1 . "<\/p>\n";
if ($sLines=~/CURRENT_RUN_ID=(.*)/){
print OUTLOG "we can now assign run id\n";
my $runVar = $1;
print "$runVar\n";
print OUTLOG "assigned current run id to variable\n";
}
else {
print "run id not assigned\n";
}
}
ВЫХОДА:
C: \ Users \ hclabv \ Desktop> Perl run1.pl
1637
И мой лог-файл (test.txt), где мы захватывая журналы во время работы сценарий выглядит следующим образом.
found current run id in log
it is found in log as : CURRENT_RUN_ID
we can now assign run id
assigned current run id to variable
Для получения файла runVar.csv от требуемого каталога, я добавил ниже фрагмент кода с в цикле, если
opendir(DAPATH,"C:/Users/hclabv/Desktop/Scripting/files") or die "Can't open DAPATH: $!";
print OUTLOG "\nfound da path : DAPATH\n";
my @adirs = readdir(DAPATH);
print "csv files @adirs\n";
print OUTLOG "Starting capturing DA\n";
my $csvfile = "$runVar.csv";
foreach my $adirs (@adirs) {
if ($adirs eq $csvfile) {
print "file found\n";
my $da = $adirs;
print "csv file is $da\n";
}
print OUTLOG "Assigned DA";
close(DAPATH);
}
@STJ, пожалуйста, отметьте как ответ, если ваша проблема решена с помощью этого решения. – Amareesh
Amareesh, @Arunesh, мне нужно собрать один файл, как в переменной, и это имя файла содержит этот идентификатор запуска, потому что я отправился в это местоположение файла и использую это: my $ da = glob "* $ runVar.csv *" ; но это также, похоже, не работает точно, не могли бы вы мне помочь. – STJ
@STJ Пожалуйста, разместите свой сценарий, который вы пробовали в своем вопросе и что именно вам нужно. Вы хотите получить файл, который содержит этот runid в своем имени в определенном каталоге? – Amareesh