in reply to Re: Problem when comparing strings as opposed to numerical values
in thread Problem when comparing strings as opposed to numerical values

I tried it with the quotes but theres no output to the file.

I also tried:

 (eval /$hash{/$filter[1]->[0]} $filter[1]->[1] $filter[1]->[2])

that didnt work either. It only works when I manually type in 'eq' - Example:

 (eval $hash{$filter[1]->[0]} eq $filter[1]->[2])

But my whole point is to use the reference to the array to pull the variable out which should be 'eq' in this case. I am stumped. Any ideas on what to do?

Replies are listed 'Best First'.
Re^3: Problem when comparing strings as opposed to numerical values
by aitap (Curate) on Jul 20, 2012 at 08:06 UTC

    What if you print what you are trying to eval? I mean, run perl -d <your script>.pl, set a breakpoint on the line where the string comparsion occurs (b <line number>), run program to that line (c) and enter: x "$hash{$filter[1]->[0]} $filter[1]->[1] $filter[1]->[2]". What will it print?

    Maybe using eval "q{$hash{$filter[1]->[0]}} $filter[1]->[1] q{$filter[1]->[2]}" can help, but it will break too if the strings contain some "{" or "}". What if you check for $@ special variable after running your evals?

    Are you sure it won't be easier and safer to write a special sub to perform the checking?

    Sorry if my advice was wrong.