#!/usr/bin/perl -w use warnings; use strict; sub processDir { my $dir = shift @_; my $script = shift @_; my $verbose = shift @_; my $ret = qx($script $dir); chomp($ret); print qq(Output:"$ret"\n) if $verbose; } # Normally via environment variable my $script = "echo -e"; # Normally via glob and processing in this script my @dirs = qw(dir1 dir2 dir3); # Normally via Getopt::Long my $verbose = 1; for my $dir (@dirs) { # Do some stuff, then: processDir($dir, $script, $verbose); }