Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: swap columns in a 2-dim array

by polettix (Vicar)
on Jun 17, 2005 at 10:36 UTC ( #467642=note: print w/replies, xml ) Need Help??


in reply to swap columns in a 2-dim array

In case you don't actually need to do a shuffle (your three constraints do not mention it, only your implementation) you can consider a simple rotation (untested, perl not available at the moment, some parentheses or corrections may be needed):
push @$_, shift @$_ for @nums;
OTOH, if you actually need shuffling, note that your approach only works for an even number of columns, so you should at least arrange for a final swap between the element whose index is the last in @cols and, say, the first column. Another question that popped to my mind is why you do that half-slicing, instead of considering adjacent elements.

Flavio (perl -e 'print(scalar(reverse("\nti.xittelop\@oivalf")))')

Don't fool yourself.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://467642]
help
Chatterbox?
[Lady_Aleena]: Why does grep(/.*$in.*/, @my_modules) work but grep { $_ =~ /.*$in.*/; $_ } @my_modules not work? What did I do wrong in the second?
[tobyink]: Why are you returning $_ n your grep block? You should return a boolean.
[tobyink]: *in your grep block
[tobyink]: You can use grep { $_ =~ /.*$in.*/; } @my_modules but why not stick to grep(/.*$in.*/, @my_modules)? (The latter is faster.)
[shmem]: Lady_Aleena, in the first example grep evaluates the result from grep and if true, returns $_. In the second, it always returns $_
[shmem]: ..the result from the pattern match
[Lady_Aleena]: tobyink, I did after I failed to get the BLOCK to work. I can't seem to get my brain around grep BLOCK, though I'm okay with grep EXPR.
[shmem]: so in the second example grep returns all true elements of the list passed
[Lady_Aleena]: Okay, so grep BLOCK is not like map BLOCK where something might need to be returned at the end.
[tobyink]: grep { $_ =~ /.*$in.*/; } @my_modules should work just fine. The problem is that you were adding on ;$_ at the end of the block. Why were you doing that?

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (7)
As of 2017-05-27 07:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?