Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

String split problem

by santosh_vjit (Novice)
on Apr 06, 2010 at 13:58 UTC ( [id://833042]=perlquestion: print w/replies, xml ) Need Help??

santosh_vjit has asked for the wisdom of the Perl Monks concerning the following question:

This node falls below the community's threshold of quality. You may see it by logging in.

Replies are listed 'Best First'.
Re: String split problem
by almut (Canon) on Apr 06, 2010 at 15:05 UTC

    You haven't specified how the double [Aussie] section is supposed to be handled...  but in case this was just a typo, you could use Config::INI::Reader

    use Config::INI::Reader; my $str =" [India] Captain1 = Dhoni Batsman1 = Sachin Bowler1 = Zaheer [Aussie] Captain = Ponting Batsman = Clarke Bowler = Warne [Aussie] Captain = Hussey Batsman = Waugh Bowler = Mcgrath"; my $hash = Config::INI::Reader->read_string($str); use Data::Dumper; print Dumper $hash; __END__ $VAR1 = { 'India' => { 'Captain1' => 'Dhoni', 'Bowler1' => 'Zaheer', 'Batsman1' => 'Sachin' }, 'Aussie' => { 'Bowler' => 'Mcgrath', 'Captain' => 'Hussey', 'Batsman' => 'Waugh' } };

    Another similar module would be Config::Any::INI, but I think the latter can only take input from file:

    use Config::Any::INI; my $hash = Config::Any::INI->load('my.ini');
Re: String split problem
by ww (Archbishop) on Apr 06, 2010 at 14:22 UTC
Re: String split problem
by ZlR (Chaplain) on Apr 06, 2010 at 14:42 UTC
    Here's how i do that :
    my $str =" [India] Captain1 = Dhoni Batsman1 = Sachin Bowler1 = Zaheer [Aussie] Captain = Ponting Batsman = Clarke Bowler = Warne [Aussie] Captain = Hussey Batsman = Waugh Bowler = Mcgrath"; my @l = split "\n", $str ; my $key ; my %rez ; for my $it (@l) { next if $it =~ m /^$/ ; if ($it =~ m/^\[(.*)\]/) { $key = $1 } else { my @t = split "=", $it ; $rez{$key}{ $t[0] } = $t[1] } } use Data::Dumper ; print Dumper \%rez ;
    It's really basic and straightforward but a least you immediately know what's going on.

    edit : did not see that the aussie section was duped, you could always if define $rez{$key} etc ...

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://833042]
Approved by planetscape
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (None)
    As of 2025-03-21 06:20 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?
      When you first encountered Perl, which feature amazed you the most?










      Results (63 votes). Check out past polls.