Мои мысли о том, как извлечь все скаляры и массивы из файла Perl, звучали так:
open (InFile, "SomeScript.pl");
@InArray = <InFile>;
@OutArray = {};
close (InFile);
$ArrayCount = @InArray;
open (OutFile, ">outfile.txt");
for ($x=0; $x<=$ArrayCount; $x++){
$Testline = @InArray[$x];
if($Testline =~ m/((@|\$)[A-Z]+)/i){
$Outline = "$1\n";
push @OutArray, $Outline;
}
}
print OutFile @OutArray;
close(OutFile);
... и это работает довольно хорошо. Проблема в том, что если в строке появятся несколько переменных, она будет захватывать только первую переменную. Примером может быть:
$FirstVar = $SecondVar + $ThirdVar;
Скрипт будет только захватывать $FirstVar
и выводить в файл. Это может все же работать, потому что $SecondVar
и $ThirdVar
должны быть инициализированы где-то еще, прежде чем исходная строка не будет иметь никакого значения Я предполагаю, что исключением из правила будет строка, в которой несколько переменных инициализируются одновременно.
Может ли пример в реальном коде Perl сломать этот скрипт?
Кроме того, как получить несколько элементов, которые соответствуют критериям моего регулярного выражения, из одной строки?