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]