Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
I object to that "easier" approach because it confuses the intent of the code; data which should be hidden from the rest of the program is revealed when you use global state this way.
A function is a piece of code lumped together to serve some purpose; the function name represents this purpose in your code. I've been influenced heavily by functional programming, but I think that programs are the most readable when functions "do the same thing" with respect to the rest of the program each time they are called; that way, when reading code you don't have to maintain a lot of state in your head to predict behavior.
There are two possibilities for the "evil" code:
  • The first call and the subsequent call "do different things" with respect to the rest of the program, in which case they should NOT be done by the same function. Two different tasks, two different functions.
  • The first and subsequent calls "do the same thing" with respect to the rest of the program. For example, Re: Is modifying the symbol table to redefine subroutines evil? shows a function which seems to do the same thing each time from outside the function, but uses the "evil" construct. In this case, putting them both in the same function is appropriate, but your solution of having global state means that you have some information which is not useful to you and which should really be hidden from the rest of the program (since all calls "do the same thing").

Update: Re^3: Is modifying the symbol table to redefine subroutines evil? suggests using a lexical closure. That seems fine to me too, I just don't like the globals much.
~dewey

In reply to Re^2: Is modifying the symbol table to redefine subroutines evil? by dewey
in thread Is modifying the symbol table to redefine subroutines evil? by tlm

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    [Corion]: Maybe the solution would be to launch a cron job every minute that takes two measurements a minute apart and sends a mail if the usage is below on the first and above threshold on the last measurement
    [marto]: that's essentially it :)
    [marto]: I think the long term solution would be to have sysadmins that do their job, so I don't have to do everything :P
    [marto]: they already have an entire BMC patrol system, which they disabled, because it was sending out spurious messages. So rather than fix the issue, or even find out what it was, they turned it off. No messages, can't be any problems, right?
    [Corion]: marto: But having open tickets / incidents increases the pressure on them ;) Of course, likely your contract / SLA specifies an upper limit for the number of incidents :-D
    [Corion]: marto: Ow ...
    [marto]: Corion They don't get into trouble for the number of tickets, or even breached tickets they have
    [marto]: which is a core issue with the client
    [Corion]: marto: Yeah, I can imagine that

    How do I use this? | Other CB clients
    Other Users?
    Others having an uproarious good time at the Monastery: (9)
    As of 2017-01-24 10:16 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?
      Do you watch meteor showers?




      Results (203 votes). Check out past polls.