ich eine Liste von Autoren wie diese:Perl beitreten Strings falsch
AU - Garrett-Bakelman, Francine E
AU - Sheridan, Caroline K
AU - Kacmarczyk, Thadeous J
AU - Ishii, Jennifer
AU - Betel, Doron
AU - Alonso, Alicia
AU - Mason, Christopher E
AU - Figueroa, Maria E
AU - Melnick, Ari M
, die ich mit einer Perl-Skript lesen:
#!/usr/bin/env perl
use strict; use warnings;
my @authors;
open my $fh, '<', '/home/con/Downloads/pmcid-PMC4354670.ris' or die "Can't read file: $!";
while (<$fh>) {
if ($_ =~ m/^AU\s+- #line starts with 'AU'
\s+ #whitespace
(.*) #author is represented by non-newline characters, saved as $1
/x) {
push @authors, $1;
}
}
close $fh;
printf("there are %u authors\n", scalar @authors);
foreach my $author (@authors) {
print "$author\n";#prints each element correctly
}
print "@authors\n";#but prints the concatenation incorrectly, 'Melnick, Ari Ma Er E Jine E'
print join ' and ', @authors;#prints 'and Melnick, Ari Ma Er E JE'
Ich kann die Liste von Strings erhält korrekt verbunden werden. Ich habe versucht, die 'Join' -Funktion, Verketten einer Zeichenfolge, wie ich den Code lese, es ist immer ein Mischmasch.
Wie bekomme ich das Array von Strings korrekt verkettet werden?
Bitte alle 'print' kommentieren und erneut ausführen, da es gut funktioniert. – ssr1012
vielleicht war ich nicht klar, es kann jedes Array-Element korrekt drucken, aber kann das Array nicht korrekt verbinden oder verketten. – con
Was war Ihre erwartete Ausgabe? – ssr1012