Я пытаюсь в Perl выбрать одну полную строку из всего документа, содержащего «CURRENT_RUN_ID». Я использовал код ниже для выполнения вышеуказанной задачи, но я не могу войти в цикл while.Выбор конкретной строки с определенной строкой
my $sSuccessString = "CURRENT_RUN_ID";
open(LOG, "$slogfile") or die("Can't open $slogfile\n");
my $sLines;
{
local $/ = undef;
$sLines=<LOG>;
}
my $spool = 0;
my @matchingLines;
while (<LOG>)
{
print OUTLOG "in while loop\n";
if (m/$sSuccessString/i) {
print OUTLOG "in if loop\n";
$spool = 1;
print map { "$_ \n" } @matchingLines;
@matchingLines =();
}
if ($spool) {
push (@matchingLines, $_);
}
}
Когда я вижу переменную '$ sSuccessString', все, что я могу собрать это«*** nooooooooo !!! ***»На самом деле, вы нарушаете дух венгерской нотации. Все в Perl может быть сжато ... поэтому вам не нужно два напоминания о том, что переменная представляет собой строку с префиксом 's' и суффикс' String'. Вместо этого 'my $ success_re = qr/CURRENT_RUN_ID/i;' или 'my $ log_fname = ...' будет фактически соответствовать *** духу *** венгерской нотации. –