Perl Script Configuration and relative implementation path for both Windows (XP) / Unix (Solaris)

HEYLO,

I am experiencing, to some extent, the mystery regarding the development of the perl script. I wrote a small Perl script using the standard (basic) Perl installation. I have the following setup:

C: \ MyScript \ perl.pl
C: \ MyScript \ Configuration \ config.ini
C: \ MyScript \ output \ output.txt

This is the source of perl.pl:

$config      = '/configuration/config.ini';
$conf        = Config::IniFiles->new( -file => $config_file );
$output_dir  = conf->val('output', 'out_dir');
$output_file = "$output_dir/output.txt";

open (out, ">$output_file") || die ("It not your day mate!");
print out "This is a test...";
close out;

This is the contents of config.ini:

[output]
output_dir = C:\MyScript\output

, , , ($ conf), , . script windows, unix ( - ), , ? script, config.ini. , , :

$config = 'C:\MyScript\configuration\config.ini';

, . , , ? ?

/ .

, MC

+3
2

$config -

$config      = '/configuration/config.ini';

config.ini - '/', , .

$config      = './configuration/config.ini';

, perl script "MyScript". FindBin $0, perl script.

+3

, , dirs

use strict;
use warnings;
use FindBin;
use File::Spec;
use Cwd;
BEGIN {
    $ENV{APP_ROOT} = Cwd::realpath(File::Spec->rel2abs($FindBin::Bin)) ;
}
#now you know your script directory, 
#no matter from where your script is called
#if you have Modules specific for your script which are in 
#a dir "lib" in the same dir as your script is
use lib  (
"$ENV{APP_ROOT}/lib",
);
my $config      = $ENV{APP_ROOT} . '/configuration/config.ini';
#Here is your script
#...
$output_file = "$ENV{APP_ROOT}/$output_dir/output.txt";

CORE, . , Windows "/" , .

.

+2

Source: https://habr.com/ru/post/1707107/


All Articles