Monks, I have a situation that I cannot seem to get around. I am using "exists" on a hash and I keep getting the following error:
exists argument is not a HASH or ARRAY element or a subroutine at deploy.pl line 166 (#1) (F) The argument to exists() must be a hash or array element or a subroutine with an ampersand, such as: $foo{$bar} $ref->{"susie"}12 &do_something Uncaught exception from user code: exists argument is not a HASH or ARRAY element or a subroutine at deploy .pl line 166. at deploy.pl line 166
Here is the code:</>
use strict; use warnings; use File::Find; my %old_list=(); my %new_list=(); my $diffs=DirCompare(); print "$_\n" for @$diffs; find ( sub { $old_list { $_ } = 1 }, $ARCHIVE ); find ( sub { $new_list { $_ } = 1 }, $SourceDir ); sub DirCompare{ for my $file ( keys %old_list ) { if ( exists %new_list{$file} ) { next; } else { push @diffs, "Old file not in new: $file"; } } for my $file ( keys %new_list) { if ( exists %old_list{ $file } ) { next; } else { push @diffs, "Old file not in new: $file"; } } return \@diffs; }
Any light that you can shed on this issue would be greatly appreciated.
In reply to exists EXPR error by smturner1
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |