Musi wyglądać głupio, ale mam mały kod Perla do odczytu pliku o treści takiej jak ta:
John|Doe
John|Smith
No|Name
Ozzy|Osbourne
Chcę przeczytać plik i pobrać dane jako zmienne $firstname
$lastname
:
#!/usr/bin/perl
use strict;
use warnings;
open(DB, "$ARGV[0]") || die ":: Can"t open database.n";
my $line;
foreach $line (<DB>){
chomp $line;
$line =~ s/^s+//;
$line =~ s/s+$//;
my ($firstname, $lastname) = split /|/, $line;
print "Firstname: $firstname - Lastname: $lastnamen";
}
Otrzymuję:
Firstname: J - Lastname: o
Firstname: J - Lastname: o
Firstname: N - Lastname: o
Firstname: O - Lastname: z
Pierwszy i drugi znak. Gdzie się mylę?
Odpowiedzi:
9 dla odpowiedzi № 1Split przyjmuje wyrażenie regularne. Jeśli chcesz dopasować |
dosłownie musisz uciec.
split /|/, $line;
0 dla odpowiedzi nr 2
Możesz to zrobić bez użycia split, z wyrażeniem regularnym
open(FH,test.txt);
my @array=<FH>;
foreach(@array)
{
$_=~ m/(w+)|(w+)/;
print "Firstname: $1 ,Lastname: $2 n";
}