Мне нужно разбить файл на разные.Perl: как разбить файл?
Exmaple (исходный файл):
*****3123123*****RAW
text1
text2
*****2312354***RAW
text3
Желаемый результат:
[FILE1.TXT]
*****3123123*****RAW
text1
text2
[file2.txt]
*****312312354***RAW
text3
Я попытался использовать split, но я всегда получаю так мне лишние белые символы в массив
open FILE, "<file";
@file= <FILE>;
close FILE;
@lines = split (/(RAW\n)/, "@file");
foreach $value (@lines) {
if ($value =~ /[a-z]|[A-Z]|[1-9]/) {
print ("$value\n");
}
}
Выход:
*****3123123*****RAW
text1
text2
*****312312354***RAW
text3
Edit: если я использую печать ("$ значение") вместо печати ("значение $ \ п") это выход (обратите внимание на 1 дополнительное пространство перед значением:
*****3123123*****RAW
text1
text2
*****12354***RAW
text3
Разве это не то, что когда вы раскалываете, это не удаляет символы новой строки, поэтому, когда вы добавляете 'print (« $ value \ n »)', вы добавляете дополнительную строку новой строки. Вот почему, похоже, есть лишние пробелы. –
без \ n Я получаю 1 лишнее пробел в начале каждого значения. – user1444482
Дополнительное пространство - это то, что вы интерполируете '@ file' в одну строку, которая по умолчанию вводит пробел между элементами. Обычно лучше читать файл по строкам, если он не очень маленький, но если вы настаиваете на его чтении сразу, вы можете написать '@lines = split (/ (RAW \ n) /, join '', @ file' или slurp все это сразу с помощью 'my $ data = do {local $ /;}; @lines = split (/ (RAW \ n) /, $ data; –
Borodin