SPUG: hash from string

ced at carios2.ca.boeing.com ced at carios2.ca.boeing.com
Wed Jul 12 15:27:33 CDT 2000


> This comes close:

> %hash = split /\n|\s*=\s*/, $x;

> And this cleans it up a little bit:

> %hash = map /'(.*)'/, split /\n|\s*=\s*/, $x;

On Jul 12, 2000 @ 11:28am, Peter Dueber wrote:

> Anyone have a good technique (maybe using map?) to take a string (with embedded new-lines) 
> like the following:
> 
> $x = "
> 'xyz' = '/export/home'
> 'adfd' = '/usr/there'
> 'ddddd = '/someplace/else'
> etc";
> 
> and directly convert it to a hash equivalent to :
> 
> %hash = ('xyz'  => '/export/home', 
>          'adfd' => '/usr/there', 
>          'ddddd => '/someplace/else',
>          etc.
>         );

Or, to avoid initial blank fields becoming 
null hash keys: 

my %hash = map { /\S/ ? $_ : () } split /\n|\s*=\s*/ => $x;

There may be better golfing around too :) 

Rgds,
--
Charles DeRykus

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     POST TO: spug-list at pm.org       PROBLEMS: owner-spug-list at pm.org
      Subscriptions; Email to majordomo at pm.org:  ACTION  LIST  EMAIL
  Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
 For full traffic, use spug-list for LIST ; otherwise use spug-list-digest
  Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/





More information about the spug-list mailing list