Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

How to have universal perl script for C and D drive ?

by gasho (Beadle)
on Feb 08, 2008 at 16:47 UTC ( [id://667014]=perlquestion: print w/replies, xml ) Need Help??

gasho has asked for the wisdom of the Perl Monks concerning the following question:

Dear Perl Monks, I would like to convert all my perl scripts so that can run on windows on C or D drive regardless. Please see what I have right now and what I would like to come up with Thanks a lot Gasho
#This is what I have set right now #$LocationOfTheDelSrvDirectory="D:\\PROGRA~1\\RESOUR~1"; #$LocationOfTheScriptsDirectory="D:\cr1_qc\eaqc\main\AutomationInfrast +ructure\SDK"; #This is what I would like to have #1. Determine from what location script is called ( D:\ ... or C:\...) #2. Perl code here for 1.(?) #Assign variable to $Drive='C' or $Drive='D'; #then use $LocationOfTheDelSrvDirectory="$Drive:\\PROGRA~1\\RESOUR~1"; $LocationOfTheScriptsDirectory="$Drive:\cr1_qc\eaqc\main\AutomationInf +rastructure\SDK";
(: Life is short enjoy it :)

Replies are listed 'Best First'.
Re: How to have universal perl script for C and D drive ?
by moritz (Cardinal) on Feb 08, 2008 at 16:54 UTC

    You can do the following to get the current working directory:

    use Cwd; # a core module ;-) my $cwd = getcwd;

    Then you can use paths relative to $cwd, or rewrite the paths depending on whether you're on C:\ or on D:\.

Re: How to have universal perl script for C and D drive ?
by ikegami (Patriarch) on Feb 08, 2008 at 17:49 UTC

    The path to the Program Files directory can be found in the registry at
    HKLM\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir

    The drive in which the script resides can be found using

    use File::Spec::Function qw( rel2abs ); my ($drive) = rel2abs($0) =~ /^([A-Z]):/i;

    Note that this won't work if the script was launched using a UNC path. ($drive will be undef.)

      File::Spec::Win32 also provides a splitpath() function which will split the path into $volume, $directories, $filename

      So you could also grab the volume from there.
Re: How to have universal perl script for C and D drive ?
by weismat (Friar) on Feb 08, 2008 at 20:03 UTC
    I would recommend you to use relative instead of absolute paths. Thus you less dependend on the actual name of the directory and not only the drive.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://667014]
Approved by moritz
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2024-04-19 17:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found