Hi,
Suppose I have this code: #/usr/local/bin/perl use warnings; use strict; use subs 'verify'; my %where=( Gary => "Dallas", Lucy => "Exeter", Ian => "Reading", Samantha => "Oregon" ); # Then i open a logfile open FH, '<', $logfile or die "Can't open $logfile!: $!"; # Now, for every line in the logfile, I will retrive a particular string, let's say a person's name and verify if it exists in my hash above: while (<FH>){ (my $person) = $_ =~ /person=(\S+)/; my $personstatus = verify(\%where,$person); # And do anything if the personstatus is this and that. # Now, on my sub "verify", I would like to know if the person exists in my hash. sub verify { my $where = shift @_; my $person = shift @_; my $personstatus; if (exists $$where{$person}){ $personstatus =1; }else { $personstatus = 0; } $personstatus; } Am I thinking as this is how it should be done when passing hashes to a subroutine? My program doesn't work and I know it has something to do with the "my $personstatus" line as well as "if (exists $$where{$person} line. Can you show me the right way of passing hashes to subroutines? Thanks. I also tried declaring %where as 'our' so that I can use "if (exists %where{$person}" instead of "if(exists $$where{person}) but i still can't make it work. Do you know if I am making any sense here? Thanks Try the following code: while (<FH>) { (my $person) = $_ =~ /person=(\S+)/; } # i am passing just the $person if (($personstatus = verify($person)==1)) { print "Found $person in hash"; } else { print"sorry"; } sub verify { (my $per) = @_; foreach $temp(sort keys %where) { if ($temp eq $per) { $found =1 ; goto xxx; } } xxx: return $found; } ____________________________________________________________________________________ Don't pick lemons. See all the new 2007 cars at Yahoo! Autos. http://autos.yahoo.com/new_cars.html Whilst this email has been checked for all known viruses, recipients should undertake their own virus checking as Xansa will not accept any liability whatsoever. This email and any files transmitted with it are confidential and protected by client privilege. It is solely for the use of the intended recipient. Please delete it and notify the sender if you have received it in error. Unauthorised use is prohibited. Any opinions expressed in this email are those of the individual and not necessarily the organisation. Xansa, Registered Office: 420 Thames Valley Park Drive, Thames Valley Park, Reading, RG6 1PU, UK. Registered in England No.1000954. t +44 (0)8702 416181 w www.xansa.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/