my %abbr = ( 'k' => 1e3, 'kb' => 1 << 10, 'g' => 1e9, 'gb' => 1 << 30, ); my $match = join '|', keys %abbr; ... and later $text =~ s/(\d+)($match)\b/$1 * $abbr{lc $2}/gie;