use Data::Dumper; my $line = qq(<Reference1> <reference1_name>jvdsj</reference1_name> <r +eference1_address>1234 gjrdkjpigkdj jkgpifodsjgi</reference1_address> + <reference1_title>njhdaslj</reference1_title> <reference1_company> j +hfdsalh</reference1_company> <reference1_csz>Los Angeles, CA,91406</r +eference1_csz><reference1_phone> 818-555-1212</reference1_phone> <ref +erence1_email>wabbit\@acme.com</reference1_email></Reference1>); my %record = reverse split /<\/(\w+)>/, $line; foreach (keys %record) { $record{$_} =~ s/<[^>]+>//g; # remove start tags $record{$_} =~ s/^\s+//; # remove extra whitespace $record{$_} =~ s/\s+$//; delete $record{$_} unless $record{$_}; # kill the outermost record + tag } print Dumper(\%record); PRINTS: $VAR1 = { 'reference1_name' => 'jvdsj', 'reference1_address' => '1234 gjrdkjpigkdj jkgpifodsjgi', 'reference1_title' => 'njhdaslj', 'reference1_company' => 'jhfdsalh', 'reference1_csz' => 'Los Angeles, CA,91406', 'reference1_phone' => '818-555-1212', 'reference1_email' => 'wabbit@acme.com' };
In reply to Re: Parsing pseudo XML files
by joealba
in thread Parsing pseudo XML files
by BMaximus
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |