Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

The perils of DWIM

by Aristotle (Chancellor)
on Oct 01, 2006 at 05:01 UTC ( #575747=perlmeditation: print w/replies, xml ) Need Help??

The sort function has extra magic to recognise bare sub names without them being parsed as a call, so you can write sort by_date @list_of_hashes where by_date is the name of a sub. I canít think of any time Iíve used that feature Ė however:

use strict; use File::Spec::Functions; use Test::More tests => 5; my @file = do { opendir my $dh, curdir or die "$!"; readdir $dh; }; sub check(&) { not grep $_ eq updir, shift->( @file ) } ;ok check { sort no_upwards @_ } ;ok check { sort no_upwards( @_ ) } ;ok check { sort ( no_upwards @_ ) } ;ok check { sort ( no_upwards( @_ ) ) } ;ok check { sort +( no_upwards @_ ) } =begin output 1..5 not ok 1 # Failed test at line 13. not ok 2 # Failed test at line 14. not ok 3 # Failed test at line 15. ok 4 ok 5 # Looks like you failed 3 tests of 5.

I just lost half an hour tracking this down.

Makeshifts last the longest.

Replies are listed 'Best First'.
Re: The perils of DWIM
by ambrus (Abbot) on Oct 01, 2006 at 13:23 UTC

    I think I've got that with print as well. I tried to write something like print foo @bar; to mean print(foo(@bar)); but perl thought it was print {foo} @bar;.

      Yeah, but that is easier to disambiguate. I would never have expected #2 to parse as it does, and with print, it wouldnít either.

      Makeshifts last the longest.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://575747]
Approved by McDarren
Front-paged by GrandFather
and the pool shimmers...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (4)
As of 2018-05-25 09:41 GMT
Find Nodes?
    Voting Booth?