Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Orcish Maneuver

by AidanLee (Chaplain)
on Dec 06, 2001 at 22:42 UTC ( #130021=note: print w/replies, xml ) Need Help??


in reply to Re: (jcwren) Re: My code and your stupidity don't mix!
in thread Would you use 'goto' here?

What, if you would enlighten me, is an Orcish Maneuver? There are only mentions of it by name on the site, but no examples...

Replies are listed 'Best First'.
(Ovid) Re: Orcish Maneuver
by Ovid (Cardinal) on Dec 06, 2001 at 23:16 UTC

    The Orcish Maneuver is a term coined by Joseph Hall in his book "Effective Perl Programming" (co-authored by merlyn). Here's the essence of it:

    my @sorted = sort { ( $times{$a} ||= -M $a ) <=> ( $times{$b} ||= -M $b ) } @old_array;

    The "orcish" (a bad attempt at humor: "or cache") maneuver basically caches the results of an expensive lookup using the ||= operator. This operator says, in the above code, that $times{$a} will be evaluated or, if it is false, set it to the value of -M $a. (-M is the file test operator for last modified time). This allows you to cache the results of -M rather than call it every time. This has the same effect as:

    for ( @old_array ) { $times{ $_ } = -M $_; } my @sorted = sort { $times{$a} <=> $times{$b} } @old_array;

    Cheers,
    Ovid

    Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.

Re: Orcish Maneuver
by dragonchild (Archbishop) on Dec 07, 2001 at 00:58 UTC
    My point exactly.

    ------
    We are the carpenters and bricklayers of the Information Age.

    Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://130021]
help
Chatterbox?
[marto]: the question is more, is Padre still the way new users should be directed?
[Discipulus]: ah ah I have all 5.26 atm but I play alone..
[Corion]: Except this RHEL box, which comes with Perl 5.10.1 , but there I installed my own 5.20.3 for the real Perl programs we run ;)
[Corion]: marto: I used Padre for some time but then switched to Notepad++, since all the funky features I wanted to put into Padre couldn't be made to work, and/or I lost interest :)
[Discipulus]: indeed marto I dunno. I tested once and many years ago. But I'm not the programmer yardstick. I try to install Padre via cpan now just to add a line about it in the issue. Strawberryperl all life long!
[marto]: yeah, when I worked on Windows I did use Np++ all the time

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (12)
As of 2018-06-25 08:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?



    Results (126 votes). Check out past polls.

    Notices?