Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: and this or that

by MeowChow (Vicar)
on Feb 06, 2001 at 00:33 UTC ( [id://56494]=note: print w/replies, xml ) Need Help??


in reply to and this or that

Usually if I want to do something like this, I use both the low-precedence and high-precedence operators, to explicitly and obviously indicate what is happening, as follows:
opendir(PWD,"$next") && my @files = readdir PWD or die "Open \"$_\" failed: $!";
A side note: As a matter of good form, I don't declare lexically scoped variables within subexpressions, and especially not within conditionally executed ones, like you did with @files. In this specific example, I would not combine the readdir and openddir in one line.

Your second example I would seperate into two statements as jeroenes suggested above, but you can also do

s/test/whatever/, print;
if you're really itching to put it all on one line. Or, if you prefer:
s/test/whatever/ => print;
   MeowChow                                               
                print $/='"',(`$^X\144oc $^X\146aq1`)[-2]

Replies are listed 'Best First'.
Re: Re: and this or that
by dws (Chancellor) on Feb 06, 2001 at 01:41 UTC
    Aside from the minor problem of using $_ where you mean to use $next, there are two problems with
    opendir(PWD,"$next") && my @files = readdir PWD or die "Open \"$_\" failed: $!";

    First, you waste future readers' time. The few seconds you've saved by writing the above rather than

    opendir(PWD,$name) or die "$name: $!"; my @files = readdir(PWD) or die "$name: $!";
    Have just eclipsed by N x "what's this? uh.. oh, I see". Better, in my humble opinion, to write straightforward code. Sure, you have code "or die" twice, but in the scheme of things, that's a really minor nit.

    Second, in the unikely event that opendir() succeeds and readdir() fails, you're presenting a misleading diagnostic.

      Which is exactly why I said:

      "In this specific example, I would not combine the readdir and openddir in one line. "

      I was re-cycling his example code simply to make another point about operator precedence.

        Mea culpa. I misread you.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://56494]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (3)
As of 2024-04-24 02:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found