Мой тестовый файл имеет «n» строк и между каждой строкой есть ^ M, что, в свою очередь, делает его одной большой строкой.Код, с которым я работаю, открывает указанный файл и должен проанализировать заголовок, а затем последующие строки, а затем выполнить поиск пути к каталогу и имени файла.Но поскольку файл просто заканчивается как большая строка, он не работает правильно
#!/usr/bin/perl
#use strict;
#use warnings;
open (DATA, "<file.txt") or die ("Unable to open file");
my $search_string = "Directory Path";
my $column_search = "Filename";
my $header = <DATA>;
my @header_titles = split /\t/, $header;
my $extract_col = 0;
my $col_search = 0;
for my $header_line (@header_titles) {
last if $header_line =~ m/$search_string/;
$extract_col++;
}
for my $header_line (@header_titles) {
last if $header_line =~m/$column_search/;
$col_search++;
}
print "Extracting column $extract_col $search_string\n";
while ( my $row = <DATA> ) {
last unless $row =~ /\S/;
chomp $row;
my @cells = split /\t/, $row;
$cells[74]=~s/:/\//g;
$cells[$extract_col]= $cells[74] . $cells[$col_search];
print "$cells[$extract_col] \n";
}
Когда я открываю тестовый файл в VI, я использовал
:%s/^M/\r/g
, и это удаляет^ М, но как мне сделать это внутри этой Perl-программы?Когда я попробовал тестовую программу и вставил s\^M/\r/g
и записал ее в другой файл, он появился как много китайских символов.