in reply to Re^4: What does _ mean?
in thread What does _ mean?

How many places do you see '-d'? How many places do you see '_'? '-d' stands for directory. '_' stands for ??? -d is the same as the unix file test, '_' is the same as ???.

It might be easy for you to remember things like this, bit it isn't for me. I guarantee you, in a week if you showed me -d(_) I'll have to look it up. And who wants to do that?

Where is this code running? Is the performance that important? Is -d $filename so much slower?

--Pileofrogs

Replies are listed 'Best First'.
It's a question of Perl Culture
by massa (Hermit) on Feb 04, 2009 at 11:12 UTC

    -d $FILE stands for "test to see if $FILE is a directory";

    _ stands for "the topic (of the current conversation)"*;

    so, -d _ means "test to see if the last tested file is a directory";

    *:

    $_ is the topic of the for, will be used by default by regexen and a lot of functions
    @_ is the collection of topics for a function (the arguments!)
    _ is the topic for file tests.
    []s, HTH, Massa (κς,πμ,πλ)
Re^6: What does _ mean?
by ikegami (Patriarch) on Feb 04, 2009 at 02:08 UTC

    How many places do you see '-d'?

    None.

    How many places do you see '_'?

    It should be used just about everywhere -d is used.

    -d is the same as the unix file test, '_' is the same as ???.

    I guess you'll be disappointed when you try to use _ with test.

      A google code search for '" -d " lang:perl' produces 108,000 results while a search for '"(_)" lang:perl' produces 6,000.

      I'll grant you, some of those -d results are spurious, someone documenting a '-d' command line switch and so on.

      Let's try and wrap this up. Do you agree with the statement, "-d $filename" is clearer than "-d (_)"? I'll agree that "-d (_)" is better for performance than "-d $filename". I'll even agree that my first post was stupid. OK?

        Do you agree with the statement, "-d $filename" is clearer than "-d (_)"?

        No. The meaning of neither is ambiguous. You may not know what they do, but I don't see how you could possibly think they do something than what they do.

        Your results are inconclusive, as -d _ without the parentheses would be enough. Maybe if you pit the total of -X $something against the total of -X _ plus -X(_) plus -X (_) etc you would have a better idea.

        Anyway, the point is moot because (IMHO!!) this:

        if( -x $filename and -d _ )
        is better, cleaner, more concise, and clearer, than
        if( -x $filename and -d $filename )
        because I am used to Perl and I know that anything that has _ in it means that thing we were just talking about, i.e., the Topic.
        []s, HTH, Massa (κς,πμ,πλ)