/ / Perl odczytuje plik i dzieli się na problemy ze zmiennymi - perl

Perl czyta plik i dzieli go na zmienne - perl

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 № 1

Split 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";
}