Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^3: When -w and use strict aren't enough...

by adrianh (Chancellor)
on Nov 04, 2003 at 15:26 UTC ( [id://304447]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: When -w and use strict aren't enough...
in thread When -w and use strict aren't enough...

Of course it is technically possible to see if an appropriate entry exists in the symbol table at runtime. However, forcing everybody to add declarations for any runtime-generated subroutines strikes me as both un-perlish and extremely unlikely to happen.

  • Comment on Re^3: When -w and use strict aren't enough...

Replies are listed 'Best First'.
Re: When -w and use strict aren't enough...
by jonadab (Parson) on Nov 04, 2003 at 18:26 UTC
    However, forcing everybody to add declarations for any runtime-generated subroutines strikes me as both un-perlish and extremely unlikely to happen.

    There's no reason it couldn't be a pragma. Why stop with use strict; use warnings; use diagnostics;  use Taint; when you can add use predeclaredsubs; use predefinedsubs; and maybe no earlyreturns; no typeglobs; and possibly use bondage; use discipline; use pain; use Inline::Pascal;


    $;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}} split//,".rekcah lreP rehtona tsuJ";$\=$ ;->();print$/

      I'm not saying that it cannot be done, just that it might be of limited utility since it would depend on code being written (or re-written) in a way that support the pragma.

      The pain of writing code to support the pragma may well be more than the pain saved by the compile time checking.

        The pain of writing code to support the pragma may well be more than the pain saved by the compile time checking.

        Oh, I would agree with that. I personally would not use said pragmas. Then again, I don't even always use strict (though I do use it in include files and in large, complex programs, and I would certainly use it in a module). However, there are some people whose mindset just tends to prefer a lot of strict rules. People who prefer Pascal over BASIC, if you can imagine. People who use strict and warnings even for one-liners and obfuscations. Those people would probably appreciate the ability to force all subs to be predefined, for example. Of course, if they really want it, one of them would have to step forward and implement it, but what I was saying is that if it's done as a pragma, we needn't object, because all you have to do to be free of it is not bother to use the pragma.

        That said, I'm not sure what the bondage pragma would do. Perhaps require all control structures to have a single entry and a single exit point (so, no next or last permitted, to say nothing of early returns), I suppose. I imagine the discipline pragma might prohibit subroutines from accessing any variables not lexically scoped within the subroutine, so that any external variables would have to be passed in as arguments to be used, and if they were to be changed the results would have to be passed back out as a return value and applied by the calling code. I'm not sure what use pain would do, exactly, but I suppose it would be even worse than discipline.

        The really neat thing about these pragmas, if they existed, would be that we could say, "C gives you enough rope to hang yourself, but Perl gives you enough rope to tie yourself up."


        $;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}} split//,".rekcah lreP rehtona tsuJ";$\=$ ;->();print$/

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (3)
As of 2024-04-18 22:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found