[devel] perl.req and strange use wrappers

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Сб Янв 28 23:35:39 MSK 2006


Hello!

В fvwm-perl (/usr/share/fvwm/perllib/FVWM/Module/Toolkit.pm)
обнаружился следующий кусок кода:

===========================================================================
sub import ($@) {
	my $class = shift;
	my $caller = caller;
	my $error = 0;
	my $name = "*undefined*";

	while (@_) {
		$name = shift;
		if ($name eq 'base') {
			next if UNIVERSAL::isa($caller, __PACKAGE__);
			my $caller2 = (caller(1))[0];
			eval "
				package $caller2;
				use FVWM::Constants;

				package $caller;
				use vars qw(\$VERSION \@ISA);
				use FVWM::Constants;
				\$VERSION = \$FVWM::Module::Toolkit::VERSION;
				\@ISA = qw(FVWM::Module::Toolkit);
			";
			if ($@) {
				die "Internal error:\n$@";
			}
		} else {
			my ($name0, $args) = split(/>?=/, $name, 2);
			my $mod = $args? "$name0 split(/,/, q{$args})": $name;
			eval "
				package $caller;
				use $mod;
			";
			if ($@) {
				$error = 1;
				last;
			}
		}
	}
	if ($error) {
		my $scriptName = $0; $scriptName =~ s|.*/||;
		my $errorTitle = 'FVWM Perl library error';
		my $errorMsg = "$scriptName requires Perl package $name to be installed.\n\n";
		$errorMsg .= "You may either find it as a binary package for your distribution\n";
		$errorMsg .= "or download it from CPAN, http://cpan.org/modules/by-module/ .\n";
		$class->showMessage($errorMsg, $errorTitle, 1);
		print STDERR "[$errorTitle]: $errorMsg\n$@";
		exit(1);
	}
}
===========================================================================

Используется это, например, таким образом:

use FVWM::Module::Toolkit qw(FileHandle IO::Select X11::Protocol>=0.52 Tk>=804.025 Tk::Balloon Tk::DragDrop Tk::DropSite Tk::LabFrame Tk::BrowseEntry Tk::PNG);

В результате perl.req не видит таких зависимостей.

С этим вообще как-то можно бороться централизованно (т.е., запатчив
этот самый sub import в FVWM::Module::Toolkit)?  Или единственный
способ - написать в том месте, где стоит use FVWM::Module::Toolkit,
нормальные use на все используемые модули?

-- 
Sergey Vlasov
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20060128/c5fcbbf8/attachment-0001.bin>


Подробная информация о списке рассылки Devel