Is your web server calling this code as the same user as the cron? If not, then explore $< (real UID), $> (effective UID), $( (real GID), and $) (effective GID) in perlvar.

But creating user-specific behavior smells bad. The better approach is to load the appropriate configuration for a specific use case. Then design config loading possibly around the paradigm of global, environment, user, command-line: Global loads first, then environment (production versus development, for example) overlays global config, then user config overlays, and finally command-line configuration options overlay. Configurable feature sets based on the user's config are easier to reason about than peppering code with if($user eq '...').

Additionally, if your business logic is supported by modules, and the calling of the business logic module is done by a minimal script, it's not hard to create one script that loads its configuration and options, and then invokes the module for crons, and another script that loads its configuration and options, and then invokes the module for web services. This strategy also leads to much more testable code.


Dave


In reply to Re: How to distinguish a crontab call and a web call by davido
in thread How to distinguish a crontab call and a web call by VK

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, details, 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, summary, 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.