http://qs321.pair.com?node_id=662267


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

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.

Replies are listed 'Best First'.
Re^5: How to copy an array to a hash?
by CountZero (Bishop) on Jan 14, 2008 at 19:34 UTC
    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