#! perl -slw use strict; use Data::Dumper; my $trans = 'GTT1506M0006-00310-38259 '; my %hash; $hash{$1} = $2 while $trans =~ m[<([^>]+)>(.*?)]g; print Dumper \%hash; __END__ C:\test>251350 $VAR1 = { 'status' => 'G', 'security_result' => 'M', 'order_number' => '0006-00310-38259', 'auth_code' => 'TT1506' };