my $condition = sub { !-d $_[0] }; my $result = check( $condition ); sub check { my ($condition) = @_; # Obviously, you'll need to find $param from somewhere. if ( $condition->( $param ) ) { blah(); } }