После прочтения ваших комментариев, я предполагаю, что ваша проблема в том, что ваш исходный файл не содержит никаких новых строк: I.e. весь файл - только одна строка. Некоторые текстовые редакторы просто переносят текст без добавления каких-либо символов разрыва строки.
У этой проблемы нет «решения»; Вы должны добавить разрывы строк, где вы хотите их. Вы могли бы написать сценарий для этого, но я сомневаюсь, что это имело бы смысл. Все зависит от того, что вы хотите сделать с этим текстом.
Вот мои рекомендации по коду для вашего фрагмента.
chomp(@array = <FILE>);
s/[()]//g for @array;
print "$_\n" for @array;
или
@array = <FILE>;
s/[()]//g for @array;
print @array;
Обратите внимание, что если у вас есть файл из другой файловой системы, вы можете получить \r
символов, оставшихся в конце ваших строк после chomp
, в результате чего вывод будет выглядеть поврежденным, перезаписывая себя.
Дополнительные примечания:
(\)|\()
лучше записать как класс символов: [()]
.
@array = <FILE>
прочитает весь файл в массив. Незачем
к петле.
- Как показано в моих примерах,
print
может быть назначен список элементов
(например, массив) в качестве аргументов. И вы можете иметь цикл постфикса
печатать последовательно.
- В цикле (postfix) все элементы цикла имеют псевдоним
$_
,
это удобный способ сделать подстановки в массиве.