Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re^2: warnings pragma anomaly

by choroba (Cardinal)
on Oct 19, 2015 at 17:40 UTC ( [id://1145346]=note: print w/replies, xml ) Need Help??


in reply to Re: warnings pragma anomaly
in thread warnings pragma anomaly

As the return value of this expression is returned and checked for truthness, it's not used in a void context. Moreover, you can use any true value at the end of a module, and you won't get any warnings. See also Acme::ReturnValue.

Update: You can check the generated lists here.

لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Replies are listed 'Best First'.
Re^3: warnings pragma anomaly
by BrowserUk (Patriarch) on Oct 19, 2015 at 21:59 UTC
    As the return value of this expression is returned and checked for truthness, it's not used in a void context.

    Are you sure about that? If you end a package with just: 1; no warning is produced; but if you end it with just: 42;:

    C:\test>perl -Mstrict -w package x; sub f{ 1 } 42; ^Z Useless use of a constant in void context at - line 5.

    Although it is returned and checked at runtime; at the point of parsing it is in a void context.

    And you can't avoid that by prefixing a return statement either:

    C:\test>perl -Mstrict -w package x; sub f{ 1 } return 42; ^Z Can't return outside a subroutine at - line 3.

    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
    In the absence of evidence, opinion is indistinguishable from prejudice.
      I usually don't run modules, I use them. No warning is produced in such situations.
      لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

        True. But before we even start talking about unit tests, it would be nice to have

        perl -wc Foo.pm
        at least come up with the "Foo.pm syntax ok" message and without raising any warnings.

        Given

        package Foo; 42;
        this would give "syntax ok" but also the "useless use of constant in void context" warning, whereas
        package Foo; 1;
        would only give the "syntax ok" message.

        Good point :)

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (6)
As of 2024-04-23 16:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found