Richard, The unitalized warnings are probably coming from one or more of $fgh, $ijk, $lmk being undefined because the regex failed to match anything. You can test this by trying to print the values of these variables.
They are probably undefinately because the record seperator is being set lexically inside of the loop (and thus won't apply to the outer while). Please consider this code: local $/ = "\n\n"; while (<FH>) { ++$count; my $fgh =~ /fgh\s+(\S+)/; my $ijk =~ /ijk\s+(\S+)/; my $lmk =~ /lmk\s+(\S+)/; no warnings qw(uninitialized); warn "1: $fgh, 2: $ijk, 3: $lmk\n"; push @yahoo, join('_', $fgh, $ijk, $lmk); use warnings; } Cheers, -J -- On Fri, May 02, 2008 at 05:55:58PM -0400, Richard Lee wrote: > Please help me with this another misunderstanding of my perl. > > My plan is to make input record separator to "\n\n" so that file records > are separated by blank space.. and then > collect information and push them into array by joining. > > But when I run this, it says uninitilized values... I am doing > something wrong.. aren't i > > > cat ././f_this.pl > #!/usr/bin/perl > > use strict; > use warnings; > > open "FH", "<", "/tmp/fgg", or die "cannot $!\n"; > > my @yahoo; > my $count; > > while (<FH>) { > local $/ = "\n\n"; > ++$count; > > my $fgh =~ /fgh\s+(\S+)/; > my $ijk =~ /ijk\s+(\S+)/; > my $lmk =~ /lmk\s+(\S+)/; > > push @yahoo, join('_', $fgh, $ijk, $lmk); > } > > [EMAIL PROTECTED] tmp]# cat fgg > abc > def > fgh 111 > ijk 333 > lmn 2 > > abc > def > fgh 222 > ijk 121 > lmk 23 > [EMAIL PROTECTED] tmp]# > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > http://learn.perl.org/ > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/