package Test::One; sub hello{ my $var = shift; print "Hello: $var\n"; } 1; package Test::Two; sub hello{ my $var = shift; print "Hello: $var\n"; } 1; package main; use strict; use warnings; use Data::Dumper; my @pkgs = qw( One Two ); foreach my $pkg ( @pkgs ) { "Test::$pkg"->hello(); } #### foreach my $pkg ( @pkgs ) { no strict 'refs'; &{'Test::' . $pkg . '::hello'}($pkg); }