If your CGIs run as the user who created them instead of the webserver (ie, setuid through something like Apache's suEXEC), then you can fallback to getpwuid if $ENV{'HOME'} is unset.

my $HOME = $ENV{'HOME'} || ( getpwuid $> )[7] or die "Uh oh, I've been evicted...\n";

If you're feeling particularly dangerous, you could also try falling back to the current directory (|| ".") if neither $ENV{'HOME'} or getpwuid return something useful, with the caveat being the current directory may not always be what you expect it to be.

However, I find such a solution limiting: what if you want to run the same app with different configurations? Not possible unless you subvert $ENV{'HOME'}.

A better way might be to have each of your apps explicity set where their config directory (or better yet, the config file itself) should be, and then optionally have ProgConfig.pm fallback to the $ENV{'HOME'}-style above if they didn't.

Something like...

package ProgConfig; sub import { my $package = shift; my $config_dir = shift || $ENV{'HOME'} || ( getpwuid $> )[7] or die "Shazbot! Where's my config dir at?\n"; # do whatever to load config } 1;

Which you'd then call from your apps as...

use ProgConfig '/path/to/my/config_dir';

    --k.



In reply to Re: Config File Placement by Kanji
in thread Config File Placement by skazat

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.