in reply to IO::Socket::Socks::Wrapper - settings from variables

G'day JimSi,

use loads modules at compile time. For your variable to work as expected, it would need to initialised also at compile time and prior to calling use.

You haven't shown the code that failed. Is it something like this (I'm just using the BEGIN block to emulate your use statement):

#!/usr/bin/env perl -l use strict; use warnings; my $host = 'localhost'; BEGIN { print 'Host: ', $host; }

Producing output like:

$ pm_1125079_begin_before_use.pl Use of uninitialized value $host in print at ./pm_1125079_begin_before +_use.pl line 9. Host:

Here's how you could fix that:

#!/usr/bin/env perl -l use strict; use warnings; my $host; BEGIN { $host = 'localhost'; } BEGIN { print 'Host: ', $host; }

Which now outputs the wanted value:

$ pm_1125079_begin_before_use.pl Host: localhost

That may lead you to a solution. If it doesn't, please post the actual code that is failing as well as all output you receive. Guidelines for what information to post with your question can be found at: How do I post a question effectively?.

-- Ken

Replies are listed 'Best First'.
Re^2: IO::Socket::Socks::Wrapper - settings from variables
by JimSi (Novice) on Apr 29, 2015 at 04:16 UTC
    unfortunately I did not explain right - I am trying to load parameters for "use" from configuration file, using Config::Simple module. The call to Config::Simple will be like
    my $cfg = new Config::Simple($configuration_file_from_commandline); use IO::Socket::Socks::Wrapper ( Net::POP3 => { ProxyAddr => $cfg->param('servername'), ProxyPort => $cfg->param('serverport'), } );
    I assume BEGIN should work for Config::Simple case as well, will try it later. Thanks.