foreach my $some_path ( (defined $path_list && $#$path_list >= 0) ? @{$path_list} : "" ) { clean_path($some_path); # $some_path is now "" ## i'd rewrite it as foreach my $some_path ( (defined $path_list and ref($path_list) eq 'ARRAY' and scalar @{$path_list} ) ? @{$path_list} : '') {