in reply to Re^2: String Variables ....
in thread String Variables ....

So... if:

my $value = $measure->getRelatedness("cat#n#1", "dog#n#1");
works, but:
my $value = $measure->getRelatedness("$words1[$i]#1", "$words2[$j]#1 +");
does not, then whatever "$words1[$i]#1" and "$words2[$j]#1" yield, it isn't what you think it is. The trick is to check, carefully, looking out for odd things like stray CR or even LF characters... I suggest:
sub show { my ($s) = @_ ; $s =~ s/([\x00-\x1F\x7F-\xA0])/sprintf("\\x%02X", ord($1))/eg ; return $s ; } ;
and then add replace your print statement with:
print "similarity of '", show("$words1[$i]#1"), "' and '", show("$wo +rds2[$j]#1"), "' = $value\n";
and check whether anything "odd" shows up.

Replies are listed 'Best First'.
Re^4: String Variables ....
by ikegami (Patriarch) on Jan 23, 2009 at 17:33 UTC

    Flexible alternative:

    use Data::Dumper; sub show { my ($s) = @_ ; local $Data::Dumper::Indent = 0; local $Data::Dumper::Terse = 1; local $Data::Dumper::Useqq = 1; return Dumper($s); }

    And you don't need to add quotes anymore:

    print "similarity of ", show("$words1[$i]#1"), " and ", show("$words2[$j]#1"), " = $value\n";