#!/usr/bin/perl -w use warnings; use strict; no strict 'refs'; our $a = 10; our $b = 20; our $c = 33; our $d = 123; my @lines = qw( <:a:0:> <:a:3:> <:b:0:> <:b:4:> <:c:5:> <:d:6:> ); foreach my $line (@lines) { if ($line =~ s/<:(\w+):(\d+):>/$$1*($2||1)/e) { printf "Result = %d\n", $line; } }