Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^2: XP and slashes?

by hsmyers (Canon)
on Apr 05, 2009 at 00:12 UTC ( #755492=note: print w/replies, xml ) Need Help??


in reply to Re: XP and slashes?
in thread XP and slashes?

Yes, the problem is something else... basically it is how to find a file relative to a .pm file when the .pm file loads and not relative to the file using the .pm file. The XP stuff was a red herring. Work ensues on the other.

--hsm

"Never try to teach a pig to sing...it wastes your time and it annoys the pig."

Replies are listed 'Best First'.
Re^3: XP and slashes?
by ikegami (Pope) on Apr 05, 2009 at 05:51 UTC

    Yes, the problem is something else... basically it is how to find a file relative to a .pm file

    From within the module,

    use Cwd qw( realpath ); use File::Basename qw( dirname ); use File::Spec::Functions qw( catdir ); my $module_dir_qfn = dirname(realpath(__FILE__)); my $db_dir_qfn = catdir($module_dir_qfn, 'db');

    Update: Updated to use OP's dir name.

      Hmmm... I didn't try that... what worked for me is the somewhat more cumbersome:
      my $db_path = ''; for (keys %INC) { if (/parse/i) { $db_path = $INC{$_}; $db_path =~ s/parse\.pm$/db\//i; last; } }
      Since the .pm requires the other file it can be found in the %INC hash and the rest follows from that. I'll take a look at your approach since it is more concise than mine.

      --hsm

      "Never try to teach a pig to sing...it wastes your time and it annoys the pig."
        That fails if the caller also uses (say) Parse::RecDescent. If you did want to use %INC, it would be:
        use Cwd qw( realpath ); use File::Basename qw( dirname ); use File::Spec::Functions qw( catdir ); my $mod = __PACKAGE__; $mod =~ s{::}{/}g; $mod .= '.pm'; $mod = $INC{$mod}; my $module_dir_qfn = dirname(realpath($mod)); my $db_dir_qfn = catdir($module_dir_qfn, 'db');

        But there's no need to waste four lines getting the file name when it's already provided for you.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (6)
As of 2019-12-15 20:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?