Nicole Seitz wrote:
>
> Hi there!
Hello,
> I'm very new to Perl and just don't understand an error message I got.Hope you
> can help me.
>
> Now, the file I'm working with contains the following data:
>
> ;Structural Safety;Elsevier SD;;;
> ;Structural Safety (95 ... );ZB-HP;Elsevier;nur online (HGF);
> ;Subsurface sensing technologies and applications;ZB-HP;KluwerOnline;HGF;
> ;Superlattices and Microstructures _(96 ... );ZB-HP;Academic;nur online;
>
> And here's the little script I've written so far:
> --------------------------------------------------------------------------------
> 1 #!/usr/bin/perl -w
> 2 use strict;
> 3 my $line;
> 4 my %titles;
> 5 my $title;
> 6 my $key;
> 7 my $value;
> 8
> 9 open INPUT , "test"
> 10 or die "Could not open file: $! ";
> 11
> 12 while (defined($line = <INPUT>)) {
> 13 if ($line =~/^;([^;]+)\s?;Elsevier (SD);/) {
> 14 #print "$1\t$2\n\n";
> 15 $titles{$1}= $2;
> 16 }
> 17 elsif ($line =~/^;([^\(]+)\s?[^\)]+\)\s?;(ZB-HP);Elsevier;/ ){
> 18 #print "$1\t$2\n\n";
> 19 $title = $1;
> 20 $title =~ s/\s$//;
^^^^^^^
Your problem is here. The regular expression is setting $1 and $2 to undef.
elsif ( $line =~ /^;([^\(]+?)\s*[^\)]+\)\s*;(ZB-HP);Elsevier;/ ) {
$titles{$1}= $2;
> 21 $titles{$title}= $2;
> 22 }
> 23 }
> 24 while ( ($key, $value) = each %titles) {
> 25 print "$key => $value\n";
> 26 }
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]