Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^3: How to copy an array to a hash?

by CountZero (Bishop)
on Jan 11, 2008 at 07:33 UTC ( #661824=note: print w/replies, xml ) Need Help??


in reply to Re^2: How to copy an array to a hash?
in thread How to copy an array to a hash?

Good idea! But why use \r\n instead of \n?

Also it looks like the OP's input file might have empty lines and that could throw the sequence out of sync unless you take special care (perhaps by using \n+ ?).

CountZero

A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

Replies are listed 'Best First'.
Re^4: How to copy an array to a hash?
by izut (Chaplain) on Jan 14, 2008 at 07:38 UTC

    It seems the OP uses Win32, that's the reason I used \r\n :-) I'm sorry, but I'm on Mac OS X so I can't test the input.

    The \n+ trick does the job, like the example below:

    use Data::Dumper; my $input = <<EOI a = 1 b = 2 c = 3 d = 4 EOI ; # clean empty lines $input =~ s/^\s*$//mg; # construct the dictionary from $input my %dict = split m/\s+=\s+|\n+/, $input; print Dumper \%dict;

    Output:

    $ perl test.pl $VAR1 = { 'c' => '3', 'a' => '1', 'b' => '2', 'd' => '4' };

    Hope this helps!

    Igor 'izut' Sutton
    your code, your rules.

      By using split m/\s+=\s+|\n+/, $input; you don't even have to "clean" empty lines. The \n+ takes care of that.

      \n means linefeed on any OS: it automagically transforms itself in whatever sequence is used in that particular OS.

      The only problem you might encounter is when you use files made under one OS on another OS. Then the line-endings might not match as one expects.

      CountZero

      A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://661824]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (8)
As of 2021-04-16 09:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?