in reply to Forgot variable syntax for $var = funct() or "Funct failed\n" / Any experience with is_hostname()

or is one of the lowest precedence operators, even below =. This means that your code is parsed as: (my $hostname = call()) or "Can't resolve thing"; You should use || instead, or // if your value can be defined but false.

my $hostname = call() || "Can't resolve"; my $hostname = call(); $hostname //= "Can't resolve"; # Alternative so +lution

Replies are listed 'Best First'.
Re^2: Forgot variable syntax for $var = funct() or "Funct failed\n";
by AnomalousMonk (Archbishop) on Jan 05, 2016 at 16:25 UTC
    my $hostname = call(); $hostname //= "Can't resolve"; # Alternative solution

    Or even just
        my $hostname = call() // "Can't resolve";

    c:\@Work\Perl>perl -wMstrict -le "sub S { return; } ;; my $s = S() // 'cannot resolve'; print qq{'$s'}; " 'cannot resolve'


    Give a man a fish:  <%-{-{-{-<

      Yes of course, it was implied in my first proposition. My point was that splitting a complex statement in two was also a valid way to disambiguate and obtain the expected value. I just used || in one case and // in the second for diversity.

        ... implied in my first proposition.

        Yeah, on second look, I have to agree that the point I was trying to make was quite adequately made in your reply above.


        Give a man a fish:  <%-{-{-{-<