Я пишу скрипт, в котором я буду запускать команду на оболочке bash и распечатывать результат.Я бы прочитал из файла A.txt
A.txt
AAA:BBB
CCC:DDD
AAA:FFF
MyCode
my $file = /path/to/A.txt;
open(my $fh, '<', $file)
or die "Couldn't open file";
while (my $line = <$fh>){
my ($ins,$pre) = split /:/, $line;
if ((substr $ins,0,1) eq "A"){
$mo = "A/C/$ins";
}
elsif ((substr $ins,0,1) eq "C"){
$mo = "X/Y/$ins";
}
Env::modulecmd:load($mo);
print "Running command cat $pre\%";
$result = `cat '$pre'\% | head`;
Env:modulecmd:unload($mo);
print $result;
}
close $fh;
У меня странная проблема, команда печати работает только правильнодля последней строки, для остальных он печатает символ «%» в следующей строке, но для последней строки он работает точно так, как ожидалось.
Таким образом, в результате переменная $ result оценивается только по справедливости дляпоследняя строка A.txt и остальные 2 строки не дают никакого вывода.
Может кто-нибудь подсказать, пожалуйста, что я здесь делаю не так.
Спасибо за ваше время