Я хочу получить список всех файлов, имя которых выглядит так: $res_dir/$line/$fub_name*.istf
означает: в каталоге $dir
в подкаталоге $line
файл, начинающийся с $name
и заканчивающийся .istf
.
каждый подкаталог содержит только 1 такой файл, но существует много подкаталогов. Я написал это:
foreach $line (@arr){
chomp ($line);
$new_istf = glob ("$res_dir/$line/$fub_name*.istf");
do something...
но он не дает мне все файлы, а только половину из них. когда я добавил следующий отладочный код:
if ($new_istf){
print "\tdbug:: $res_dir/$line/$fub_name*.istf:\t'$new_istf'\n";
} else {
print "\tdbug:: $res_dir/$line/$fub_name*.istf:\t''\n";
}
и полученный результат был:
dbug:: RESULTS//791202_0_SA0/ieuni5cts*.istf: 'RESULTS//791202_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791212_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791241_0_SA0/ieuni5cts*.istf: 'RESULTS//791241_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791248_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791251_0_SA0/ieuni5cts*.istf: 'RESULTS//791251_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791258_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791272_0_SA0/ieuni5cts*.istf: 'RESULTS//791272_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791273_0_SA1/ieuni5cts*.istf: ''
dbug:: RESULTS//791301_0_SA0/ieuni5cts*.istf: 'RESULTS//791301_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791333_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791349_0_SA0/ieuni5cts*.istf: 'RESULTS//791349_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791357_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791405_0_SA1/ieuni5cts*.istf: 'RESULTS//791405_0_SA1/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791432_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791434_0_SA0/ieuni5cts*.istf: 'RESULTS//791434_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791459_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791462_0_SA0/ieuni5cts*.istf: 'RESULTS//791462_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791463_0_SA0/ieuni5cts*.istf: ''
dbug:: RESULTS//791467_0_SA0/ieuni5cts*.istf: 'RESULTS//791467_0_SA0/ieuni5cts.mlc.xxx.x.istf'
dbug:: RESULTS//791471_0_SA1/ieuni5cts*.istf: ''
но все эти файлы существуют. поскольку glob
предположим, что он работает как интерпретатор продажи, я проверил его, а когда я echo RESULTS//791463_0_SA0/ieuni5cts*.istf
(и любой другой файл, который не был обнаружен glob
, он дает правильное имя файла.
Я также пытался запустить glob как один лайнер с путями, которые не дали результата, и это сработало:
perl -e 'print glob("RESULTS//791467_0_SA0/ieuni5cts*.istf"),"\n"'
и это также дало правильный результат
Где проблема в моем коде?