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

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

Hello!

I'm newbi and sill I've got some troubles with simple things. I know that practice is a way to perfection, so I'm training all exercises I can find.
And I've found something like this:

In articles.txt files is:
[Athlon 4000+] price=300 euro produce=AMD description=Fast [Celeron 3000] price=200 euro produce=Intel description=Slower
How to parse this into:
%hash( "item"=>"Athlon 4000+", "price"=>"300 euro" "produce"="AMD" "description="Fast"); etc...
I've made some terrible stupid code:
#!/usr/bin/perl use warnings; use strict; my $file = "articles.txt"; open( FILE, "< $file" ); my @all = <FILE>; close FILE; my $temp; my ( @art, @produce, @prices, @descriptions ); foreach $temp (@all) { if ( $temp =~ m/\[(.*)\]/ ) { push @art, $1; } } foreach $temp (@all) { if ( $temp =~ m/produce=(.*)/ ) { push @produce, $1; } } foreach $temp (@all) { if ( $temp =~ m/price=(.*)/ ) { push @prices, $1; } } foreach $temp (@all) { if ( $temp =~ m/descriptions=(.*)/ ) { push @descriptions, $1; } }
and try to do with it something like this:
my %hash = ( "art" => ( shift @art ), "produce" => ( shift @produce ), "price" => ( shift @prices ), "descriptions" => ( shift @descriptions) );
I know it is totaly stupid - this is the worse code i ever wrote, but I have no idea how to do things like that.
Any compassionate monk can whisper me any hint?
Thanks a lot

Uksza