Mon fichier de test a "n" nombre de lignes et entre chaque ligne il y a un^M, qui à son tour en fait une grande chaîne. Le code que je suis en train d'utiliser ouvre ce fichier et doit analyser un en-tête, puis les lignes suivantes, puis rechercher le chemin du répertoire et le nom du fichier. Mais parce que le fichier se termine juste comme une grande chaîne ne fonctionne pas correctementComment remplacer^M par une nouvelle ligne en perl
#!/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";
}
Quand j'ouvre le fichier de test en VI j'ai utilisé
:%s/^M/\r/g
et qui enlève le M de^mais comment Est-ce que je le fais dans ce programme Perl? Quand j'ai essayé un programme de test et que j'ai inséré le s\^M/\r/g
et l'ai fait écrire dans un fichier différent, il est apparu comme beaucoup de caractères chinois.
préfèrent 'ouvrir mon $ DATA , "<", $ filename' pour "ouvrir DATA", <$ filename "'. – flies