smturner1 has asked for the wisdom of the Perl Monks concerning the following question:
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: exists EXPR error
by atcroft (Abbot) on Dec 15, 2014 at 03:14 UTC | |
by smturner1 (Sexton) on Dec 15, 2014 at 05:09 UTC | |
by BrowserUk (Patriarch) on Dec 15, 2014 at 05:25 UTC | |
by smturner1 (Sexton) on Dec 15, 2014 at 05:44 UTC | |
|
Re: exists EXPR error
by LanX (Saint) on Dec 15, 2014 at 05:46 UTC | |
by Eily (Monsignor) on Dec 15, 2014 at 12:59 UTC | |
by LanX (Saint) on Dec 15, 2014 at 13:47 UTC | |
by choroba (Cardinal) on Dec 15, 2014 at 13:58 UTC | |
by LanX (Saint) on Dec 15, 2014 at 14:08 UTC |