LINUX.ORG.RU

Perl: Можно ли подгрузить модули через requre 'modules.pl'?


0

0

Есть основной скрипт:
[CODE]
use strict;
BEGIN { require './modules.pl'; }

if ('a' > 1) { print "Warnings Test"; }
my $t = 'Тест';
print "W: $t\n";
$t =~ s/т/1/gi;
print "W: $t\n";
[/CODE]

и файл, который должен подгружать модули - 'modules.pl':

[CODE]
require 5.004;
use strict;
use warnings; use diagnostics;

use locale;
use POSIX qw(locale_h);
setlocale(LC_CTYPE,"ru_RU.CP1251");
[/CODE]

При этом 'use warnings; use diagnostics;' пробрасывается в основной скрипт, а вот 'use locale;' нет.
В чем проблема?
Как добиться чтобы

[CODE]
use locale;
use POSIX qw(locale_h);
setlocale(LC_CTYPE,"ru_RU.CP1251");
[/CODE]

пробрасывался в основной скрипт?
anonymous

ээмм
прописать в основном
use locale
=)

anonymous
()
Ответ на: комментарий от Zulu

>А ты посмотри на цирк, который делает Exporter, и больше сам так не делай.

Посмотрел, но мне так и не удалось экспортировать 'use locale', делал так:

test.pl: #!/usr/bin/perl

use A qw( $b ); #use locale;

print "a: $b\n"; print "A:a: $A::b\n";

# Проверка работы locale - REGEX должен заменить все буквы "п/П" на "P" my $t = 'ппПППпппППП';

if ('a' > 1) { print "Warnings Test, if we see warnings here - warnings is ON\n"; } print "WAS: $t\n"; $t =~ s/п/P/gi; # ignore case work good only with 'use locale' print "NEW: $t\n";

a.pm: #!/usr/bin/perl

package A;

require Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw($b); # symbols to export on request

use locale;

sub import { $A::b = 1; A->export_to_level(1, (locale) ); A->export_to_level(1, @_); }

В чем проблема?

anonymous
()
Ответ на: комментарий от Zulu

FIX:
>А ты посмотри на цирк, который делает Exporter, и больше сам так не делай. 
Посмотрел, но мне так и не удалось экспортировать 'use locale', делал так: 

test.pl:
#!/usr/bin/perl

use A qw( $b );
#use locale;

print "a: $b\n";
print "A:a: $A::b\n";

# Проверка работы locale - REGEX должен заменить все буквы "п/П" на "P"
my $t = 'ппПППпппППП';

if ('a' > 1) { print "Warnings Test, if we see warnings here - warnings is ON\n"; }
print "WAS: $t\n";
$t =~ s/п/P/gi; # ignore case work good only with 'use locale'
print "NEW: $t\n";

a.pm:
#!/usr/bin/perl

package A;

require Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw($b);  # symbols to export on request

use locale;

sub import
{
	$A::b = 1;
	A->export_to_level(1, (locale) ); 
	A->export_to_level(1, @_);
} 

В чем проблема? 

anonymous
()

Не надо так делать, имхо.

anonymous
()
Ответ на: комментарий от anonymous

Это не цирк, это собственно юзерский интерфейс. Посмотри как сам Exporter внутри это делает.

Zulu ★★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.