![]() |
split commands oddity
Hi, room
Beginner of learning perl here!! I have question to all, I have below file name datebook.master which contains only 2 lines Mike wolf:12/3/44:144 park ave, paramus: 44000 Sarah kim: 3/2/67:255 lomel ave, fort lee: 33000 Now, I am testing out below scripts and working fine. -------------------- scripts 1------------------------------------------ #!/usr/bin/perl -w open(FILE, "datebook.bak") || die "CAn't open $!\n"; while(<FILE>) { @line=split(":"); print "$line[0] $line[2]\n"; } close(FILE) ------------------------------------------------------------------------ And, I get desired results. However, if I do a script w/ below, it does not work. -------------------- scripts 2------------------------------------------ #!/usr/bin/perl -w open(FILE, "datebook.bak") || die "CAn't open $!\n"; @lines=(<FILE>); while(<@lines>) { @line=split(":"); print "$line[0] $line[2]\n"; } close(FILE) ------------------------------------------------------------------------ Can someone tell me why this is happening? I want script 2 since I need to call this array again in the later parts of the scripts(in the longer version). Can someone kindly respond? Big thanks in advance. |
Re: split commands oddity
rxl124@hehe.com wrote:
> However, if I do a script w/ below, it does not work. <snip> > while(<@lines>) { Replace that with for (@lines) { > Can someone tell me why this is happening? http://www.perldoc.com/perl5.8.0/pod/perlsyn.html -- Gunnar Hjalmarsson Email: http://www.gunnar.cc/cgi-bin/contact.pl |
Re: split commands oddity
rxl124@hehe.com wrote in message news:<8a1229a0.0401272329.31128643@posting.google. com>...
> Hi, room > Beginner of learning perl here!! > > I have question to all, > > I have below file name datebook.master which contains only 2 lines > Mike wolf:12/3/44:144 park ave, paramus: 44000 > Sarah kim: 3/2/67:255 lomel ave, fort lee: 33000 > > Now, I am testing out below scripts and working fine. > -------------------- scripts 1------------------------------------------ > #!/usr/bin/perl -w > open(FILE, "datebook.bak") || die "CAn't open $!\n"; > while(<FILE>) { > @line=split(":"); > print "$line[0] $line[2]\n"; > } > close(FILE) > ------------------------------------------------------------------------ > > And, I get desired results. > However, if I do a script w/ below, it does not work. > > -------------------- scripts 2------------------------------------------ > #!/usr/bin/perl -w > open(FILE, "datebook.bak") || die "CAn't open $!\n"; > @lines=(<FILE>); > while(<@lines>) { > @line=split(":"); > print "$line[0] $line[2]\n"; > } > close(FILE) > ------------------------------------------------------------------------ > > Can someone tell me why this is happening? > I want script 2 since I need to call this array again in the later parts of > the scripts(in the longer version). > > Can someone kindly respond? > > Big thanks in advance. Change while(<@lines>) to foreach (@lines) ++imanshu. |
Re: split commands oddity
himanshu@gdit.iiit.net (Himanshu Garg) wrote in message news:<a46e54c7.0401280523.2276cc5b@posting.google. com>...
> rxl124@hehe.com wrote in message news:<8a1229a0.0401272329.31128643@posting.google. com>... > > Hi, room > > Beginner of learning perl here!! > > > > I have question to all, > > > > I have below file name datebook.master which contains only 2 lines > > Mike wolf:12/3/44:144 park ave, paramus: 44000 > > Sarah kim: 3/2/67:255 lomel ave, fort lee: 33000 > > > > Now, I am testing out below scripts and working fine. > > -------------------- scripts 1------------------------------------------ > > #!/usr/bin/perl -w > > open(FILE, "datebook.bak") || die "CAn't open $!\n"; > > while(<FILE>) { > > @line=split(":"); > > print "$line[0] $line[2]\n"; > > } > > close(FILE) > > ------------------------------------------------------------------------ > > > > And, I get desired results. > > However, if I do a script w/ below, it does not work. > > > > -------------------- scripts 2------------------------------------------ > > #!/usr/bin/perl -w > > open(FILE, "datebook.bak") || die "CAn't open $!\n"; > > @lines=(<FILE>); > > while(<@lines>) { > > @line=split(":"); > > print "$line[0] $line[2]\n"; > > } > > close(FILE) > > ------------------------------------------------------------------------ > > > > Can someone tell me why this is happening? > > I want script 2 since I need to call this array again in the later parts of > > the scripts(in the longer version). > > > > Can someone kindly respond? > > > > Big thanks in advance. > > Change while(<@lines>) to foreach (@lines) > > ++imanshu. thank you all, I have used for and it's working like charms.. I was doing excersise on the book that I recently purchased so that I can practice on perl by myself and it was getting tough to do this particular one cause I couldn't understand what was going on. Below is entire script(please do advise as I am real beginner and if I made really short script long one.) also, this --> @all_lines = map { split(":") } @lines; , not understanding why split command would not work w/out map....... At all rate, thank you very much. ---------------------------------------------------------------- #!/usr/bin/perl open (FILEINFO, "file.txt") || die "Can't open file $!\n"; @lines=<FILEINFO>; close FILEINFO; @all_lines = map { split(":") } @lines; print "Who would you like to find? \n"; chomp($looking_for=<STDIN>) ; print "You are looking for $looking_for \n"; $count_look = grep(/$looking_for/i, @all_lines); @count_look = grep(/$looking_for/i, @all_lines); print " Number of person that matched was $count_look \n"; print " They are @count_look \n"; for (@lines) { ( $name, $phone, $address, $bd, $sal )=split(":"); print "$name\t $phone\n"; } sleep(1); print "Who are you searching for ?"; chomp($looking_for1=<STDIN>) ; @looking_for2=grep(/$looking_for1/i, @lines); $looking_for2=grep(/$looking_for1/i, @lines); ( $name_l, $phone_l, $address_l, $bd_l, $sal_l )=map {split(":") } @looking_for2; print "@looking_for2\n"; sleep(1); print "What is the new phone number for $looking_for1 ?"; chomp($new_numb=<STDIN>); print "$looking_for1\'s phone number is currently $phone_l\n"; @newinfo = split(":", @looking_for2); @newinfo1 = splice(@newinfo, 1,1, "$new_numb"); print "Here is the line showing the new phone number:\n"; print join(":", $name_l, $new_numb, $address_l, $bd_l, $sal_l), "\n"; print "$looking_for1 was found in the array $looking_for2 times. \n"; |
| All times are GMT. The time now is 03:15 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.