http://www.perlmonks.org?node_id=1208881


in reply to Re^2: String searching in file
in thread String searching in file

###This takes counts the keys from the the in the hash previously populate from the file and puts it into scalar

my $oldsize = keys %old;

#Does the compare, and if the count of hash keys from the <$in> and different from the hash keys of @command has increased (i.e. new keys added)

if( keys %old > $oldsize ) # only write if new ips added

## If file is there then read contents into keys and associating a value of blank or () means new line?
## why wouldn't you do @old{<$in>} = undef; , would it be wrong?

  @old{ <$in> } = (); # note: keys have \n

In this case no difference but possibly misleading you to think @old{<$in>} = 1; would assign the value 1 to all the keys from <$in> which is not the case. Try this simple example

#!/usr/bin/perl use strict; use Data::Dumper; my @keys = ('a','b','c'); my %hash=(); @hash{@keys} = 1; print Dumper \%hash; __END__ $VAR1 = { 'c' => undef, 'a' => 1, 'b' => undef };
poj