use Fcntl ':flock'; # import LOCK_* constants sub gencli { open my $fh, '<', $gencli or die "Can't open $gencli $!"; flock ($fh, LOCK_EX) or die "Can't lock $gencli for reading: $!"; wantarray ? <$fh> : [<$fh>]; } my $gencli_ref = gencli(); # both of these my @gencli_ary = gencli(); # work