in reply to Re^5: winter games, perl, ice and bling
in thread winter games, perl, ice and bling

All I'm saying, and I don't think this is a stretch, is that the current implementation of things like $/ with no lexical scoping is a mis-feature, and the best thing to do with these is to avoid them as much as possible and use local on them when they are unavoidable. The global scoping of these settings has caused many problems for many perl users, and caution is called for.
  • Comment on Re^6: winter games, perl, ice and bling

Replies are listed 'Best First'.
Re^7: winter games, perl, ice and bling
by BrowserUk (Patriarch) on Mar 27, 2008 at 15:04 UTC

    But think about what not having those variables means.

    No other language I know of allows the application programmer to write a standard piece of code:

    while( <$fh> ) { processRecord( $_ ); }

    And with that standard, recognisable, picked-up-in-the-first-week-of-programming construct, can process any file. Regardless of whether it uses *nix conventions, or dos conventions or Mac conventions or network/socket conventions. Or if it is uses fixed length records. Or paragraphs.

    The same common construct deals with all these by simply changing the value of one variable.

    You want scope for errors?

    Most runtime libraries have readline() and writeline() subs or methods, but the record separator is hardwired.

    Want to read or write a *nix file on a dos machine, or MAC file on a *nix machine? Then you have to implement it yourself and move to using low-level reads() or getc() and doing your own buffering. And repeat the exercise for each input type. And each output type. And every programmer on every platform has to do the same.

    Every facility Perl provides is there for a reason: to simplify the life of the programmer and move as much code into the thoroughly tested and supported RTL and core as possible. The more the core does, the less the programmer has to.

    And all the current vogue for rejecting and deprecating Perl's features, on the basis of OO orthodoxy, or one-size-fits-all "best practices" does, is create the need for every programmer to re-invent those features themselves.

    And that simply creates the scope for errors, not prevents them! And all for the sake of less need to educate and cheaper programmers. You see a good ROI in that?


    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".
    In the absence of evidence, opinion is indistinguishable from prejudice.