Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: split and uninitialized variables

by jeffa (Bishop)
on Sep 03, 2004 at 15:26 UTC ( #388308=note: print w/replies, xml ) Need Help??


in reply to split and uninitialized variables

I prefer to store the list returned by split in an array or hash slice:

use strict; use warnings; use Data::Dumper; my @key = qw(x y z); my %hash; while (<DATA>) { chomp; @hash{@key} = split ','; print Dumper \%hash; } __DATA__ a,b,c a,b a,b,c,d a,,,

[UPDATE] No. Scalars are not the better choice simply because you know what the data that you are working on looks like. If you deal with multiple things, why not put them in a container so you only have to move one thing around? :)

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)

Replies are listed 'Best First'.
Re^2: split and uninitialized variables
by podian (Scribe) on Sep 03, 2004 at 16:28 UTC
    That is what I usually do. But if you know what the data you are working on, then scalars will be better.
    One example could be "name, address-line1, address-line2"
    and line 2 might be or might not be present.
    So to summarise the replies, it would be better to initialize them in the next line.
    All the other solutions seem to have some problems!

      The ( '' ) x 3 solution doesn't.

      Another option:

      my ( $foo, $bar, $baz ); $_ .= '' for ( $foo, $bar, $baz ) = split /,/;

      Makeshifts last the longest.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://388308]
help
Chatterbox?
[Discipulus]: map of intenet

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2017-11-23 21:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:













    Results (338 votes). Check out past polls.

    Notices?