Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Palindrome array

by LanX (Canon)
on Dec 29, 2012 at 06:13 UTC ( #1010793=note: print w/ replies, xml ) Need Help??


in reply to Palindrome array

The ugly truth is both don't work!

eq forces scalar context and is meant to compare strings

So in the first code you are checking if the sizes (after stringification) are equal.

DB<107> @a = 1..3 => (1, 2, 3) DB<108> @a eq "3" => 1

in the second you have scalar from reverse on RHS

DB<123> (reverse @a) => (3, 2, 1) DB<124> scalar (reverse @a) => 321 DB<125> "321" eq (reverse @a) => 1

please stop doing weird things!

you can try the (less weird) smart match operator ~~ to compare arrays.

DB<129> @a=(3,1,3) => (3, 1, 3) DB<130> @a ~~ [reverse @a] => 1 DB<131> @a ~~ [3,1,3] => 1 DB<132> @a=1..3 => (1, 2, 3) DB<133> @a ~~ [reverse @a] => ""

a poor man's solution with eq is to explicitly stringify on both sides.

DB<143> @a=(3,1,3) => (3, 1, 3) DB<144> @ar=reverse @a => (3, 1, 3) DB<145> "@a" => "3 1 3" DB<146> "@a" eq "@ar" => 1

But this depends on the nature of your array elements, don't be too surprised about:

DB<151> "@a" => "3 1 3" DB<152> @b=(3,"1 3") => (3, "1 3") DB<153> "@a" eq "@b" => 1

Cheers Rolf


Comment on Re: Palindrome array
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1010793]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (9)
As of 2014-11-29 00:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (200 votes), past polls