nixp.ru v3.0

20 октября 2017,
пятница,
01:02:48 MSK

DevOps с компанией «Флант»
raba написал 6 апреля 2009 года в 15:49 (575 просмотров) Ведет себя неопределенно; открыл 33 темы в форуме, оставил 77 комментариев на сайте.

Идея в том чтобы пару переменых были доступны отовсюду.Программа составня (состоится из несколько файлов), надо сделать так, чтобы можно было задать ети переменные в первом вызываемом файле, с изначально неопр. значение, на конкр.примере после цикла 'while' чтобы принимали какие-то значения, и дальше ети значения чтобы оставались на протяжение все программой????

#!/usr/bin/perl -w

system(clear);

package Foo;

our $bar;

$bar = 20;

open( STG, «< settings» ) or die «Can’t open $!»;

while( ) {

$bar =~ /(?<=[ztrq]\:\s).*/;

$baz =~ /(?<=(e{1})\:\s).*/;

$adm =~ /(?<=d\:\s).*/;

$pwd =~ /(?<=^\w{2}\:\s).*/;

}

close STG;

print(«host ${Foo::bar}\nParam1: $baz\nParam2: $adm\npwd:$pwd\n\n\t\t\t\t\t[y..][n]\n»);

Результат:

Use of uninitialized value in concatenation (.) or string at ./test.pl line 33.

Use of uninitialized value in concatenation (.) or string at ./test.pl line 33.

Use of uninitialized value in concatenation (.) or string at ./test.pl line 33.

Host: 20

Param1:

Param2:

pwd:

myst

Варианта два:

1. Использовать отдельный package, например Configuration и делать $Configuration::var вместо $var.

2. Мусорить в main и делать $main::var вместо $var.

raba

Спасибо,myst!

А на моем примере, можете конкретно показать синтаксис?

myst

Нет нельзя. Или ты понимаешь, что я говорю, или ты не знаешь Perl, а хочешь сфилонить лабу. [censored]

raba

:)

Дмитрий Шурупов

Вообще в сети несложно найти информацию о том, как правильно делать пакеты в перле. Или, например, в книжке «Изучаем глубже» сабж, по-моему, был.

raba

вообще-то я просто так тем не создаю. до создание, первое что перелопатил 'perldoc -f our' в командной строке 'cmd' находится :). Однотипно создал, ощущение такое что что-то с regex’ы буду разбиратся, раз помогать не хотите, узнаю скажу,если хорошое настр. ;) !!

Дмитрий Шурупов

Вот пример «правильного» пакета:

package MyConf;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw( $my_var1 );
$my_var1       = 'something';
1;

После его подключения через «use» можно спокойно работать с $my_var1 без дополнительных объявлений.

raba

ошибка моя, исправил и все работает!Спасибо!