use strict; use warnings; use 5.010; my $str = 'XXXX - 12345 - - XXXXXXX XX - XXXXX XX TN6789'; my @pieces = split /\s+/, $str; my $val1 = $pieces[2]; (my $val2 = $pieces[-1]) =~ s/^TN//; say $val1; say $val2; my %hash = ( 'keyA' => $val1, 'keyB' => $val2 ); say %hash; --output:-- 12345 6789 keyB6789keyA12345