#!/usr/bin/perl use strict; use warnings; my %subs = ( prod1 => \&sub_prod1, prod2 => \&sub_prod2 ); foreach my $product (@products) { &{$subs{$product}}("lala"); } sub sub_prod1 { print "1 ", shift, "\n"; } sub sub_prod2 { print "2 ", shift, "\n"; }