Keep It Simple, Stupid PerlMonks

### Re: Palindrome array

by LanX (Chancellor)
 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

Create A New User
Node Status?
node history
Node Type: note [id://1010793]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (6)
As of 2017-08-24 08:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Who is your favorite scientist and why?

Results (366 votes). Check out past polls.

Notices?