trinitr0
@trinitr0
провинциальный админ

Как передать значение переменной в модуль в Perl?

Здравствуйте!

Каким образом в perl можно передать значение переменной из основного модуля в подключаемый?

Пробовал так (нужно передать значение переменной $ip в модуль getlib):

main.pl:
use getlib;
use strict;
...
while (@row = $sth -> fetchrow_array())
{	
	$ip = $row[0]; 
	
	foreach $ip(@row)
	{
		print "$ip - OK!, then $ip to continue...\n";
		getconf();	        		
    }
}
getlib:


getlib.pm:
package getlib;
use Exporter 'import';
our @EXPORT_OK = /getconf/;

sub getconf {
	...	
	$telnet -> open($::ip); #connect to switch
	...
}
1;
  • Вопрос задан
  • 47 просмотров
Решения вопроса 1
@pcdesign
ООП - стиль

# main.pl
use strict;
use warnings;
use utf8;
use Getlib;

my $glib = Getlib->new( ip => '127.0.0.1' ); 

my $res = $glib->getconf( );


# Getlib.pm 
use strict;
use warnings;

package Getlib;

sub new {
    my ( $class, %self ) = @_;
    bless \%self, $class;
    return \%self;
}

sub getconf {
    my $self = shift;
    print $self->{ip}, "\n";
    return "aaaa";
}
1;


# perl main.pl 
127.0.0.1


Процедурный стиль

# main.pl
use strict;
use warnings;
use utf8;
require "Getlib.pm";

my $glib = Getlib::getconf( '127.0.0.1' );


# Getlib.pm
use strict;
use warnings;

package Getlib;


sub getconf {
    my $ip = shift;
    print $ip, "\n";
    return "aaaa";
}
1;


И имена пакетов и файлов пакетов принято писать с большой буквы, а включенные в дистрибутив perl с маленькой. Вообще в перле TMTOWTDI, и еще много существует вариантов сделать это.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы