$hash{$_} ||= 1 + keys %hash for @list; $hash{$_} = $hash{$_} || 1 + keys %hash for @list; #### for ( @list ) { $hash{$_} ||= ( 1 + keys %hash ); } for ( @list ) { $hash{$_} = ( $hash{$_} || ( 1 + keys %hash ) ); } #### $hash{$_} ||= 1 + keys %hash; # looks more like: ( $hash{$_} = $hash{$_} ) || ( $hash{$_} = 1 + keys %hash )