У меня проблемы с моим кодом ниже - я пытаюсь выяснить, как открыть все эти текстовые файлы (CSV-файлы что конец в DIS состоит в том, что у всех есть одна строка в них) и получить из них первые два символа (это все числа) и напечатать их в другом файле с тем же именем с суффиксом «.number». Некоторые из этих файлов .DIS не имеют в них ничего, и в этом случае я хочу напечатать «0».Извлечение первых двух символов из файла в perl в другой файл
Наконец, я хотел бы просмотреть каждый оригинальный .DIS-файл и удалить первые 3 символа - я сделал это через bash.
my @DIS = <*.DIS>;
foreach my $file (@DIS){
my $name = $file;
my $output = "$name.number";
open(INHANDLE, "< $file") || die("Could not open file");
while(<INHANDLE>){
open(OUT_FILE,">$output") || die;
my $line = $_;
chomp ($line);
my $string = $line;
if ($string eq ""){
print "0";
} else {
print substr($string,0,2);
}
}
system("sed -i 's/\(.\{3\}\)//' $file");
}
Когда я запускаю этот код, я получаю список номеров объединяются вместе и пустые файлы .DIS.number. Я довольно новичок в Perl, поэтому любая помощь будет оценена!
Спасибо - все файлы теперь отображаются, но я получаю несколько ошибок. num_files, где исходный dis_file ничего не имеет, в них нет «0». Многие из этих файлов имеют тот же номер, что и другой num_file, где исходный dis_file был ненулевым. Я получаю сообщение об ошибке «Использование неинициализированного значения $ text in print at line 20» и «Использование неинициализированного значения $ text в подстановке (s ///) в строке 13.» Я не совсем уверен, как это исправить. Это потому, что некоторые из файлов dis_files не определены? Наконец, есть ли способ распечатать «-» в исходных файлах DIS, если они пусты? Благодаря! – JDY
@ Justin: Извините, я сделал глупую ошибку. Теперь он должен работать лучше – Borodin
Большое спасибо за помощь. Теперь он работает лучше, но я все еще получаю сообщение об ошибке «использование неинициализированного значения $ text в подстановке (s ///) в строке 13.» Кроме того, я изменил 'print $ fh '- \ n"; 'to' print $ fh "0"; '- Мне было интересно, если бы я мог напечатать« - »в оригинальном файле DIS, а не в новом num_file. – JDY