From: "John W. Krahn" <[EMAIL PROTECTED]> > Peter Scott wrote: > > In article <[EMAIL PROTECTED]>, > > [EMAIL PROTECTED] (Edward Wijaya) writes: > > > >>BTW, can you explain what's the difference between these two? > >> > >>>sub hamming_distance_string { ( $_[0] ^ $_[1] ) =~ tr/\0// } > > > > In a scalar context, tr/// returns the count of the number of > > characters seen. > > > >>>sub hamming_distance_string { () = ( $_[0] ^ $_[1] ) =~ /\0/g } > > > >>From inside to out: make the global match on the XOR result. > > We want this to be in a list context so that all of them are made, > > but we don't need there to be anything in the list assigned, so we > > use the empty list (). This subroutine must be called in a scalar > > context, because the result of a list assignment in scalar context > > is the number of things assigned, i.e., the number of matches. > > Elegant, but... somewhat advanced. > > Yes, you're right, I should have assigned to a scalar to avoid any > confusion about the calling context. :-) > > sub hamming_distance_string { my $ret = ( $_[0] ^ $_[1] ) =~ tr/\0//; > $ret }
sub hamming_distance_string { scalar( ( $_[0] ^ $_[1] ) =~ tr/\0//) } would be enough :-) Jenda ===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz ===== When it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like. -- Terry Pratchett in Sourcery -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>