Метод :: Подписи, порядок вывода функции в модуле - PullRequest
1 голос
/ 20 января 2012

Я пишу свой собственный модуль, в котором я определил три функции:

package YUCO::Test;

use 5.008008;
use strict;
use warnings;

require Exporter;
use AutoLoader qw(AUTOLOAD);
use Method::Signatures;

our @ISA = qw(Exporter);
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
our @EXPORT = qw( Test1 Test2 Test3 );
our $VERSION = '0.01';

#-----------------------------------------------------
func Test1( Str $a='' )
{
        print ' ok from Test1, and a is : '.$a."\n";
}

#-----------------------------------------------------
func Test2( Str $a='' )
{
        print ' ok from Test2, and a is : '.$a."\n";
}

#-----------------------------------------------------
func Test3( Str $a='' )
{
        print ' ok from Test3, and a is : '.$a."\n";
}

#-----------------------------------------------------

1;
__END__

, а затем, когда я делаю тестовую программу со следующими строками:

#!/usr/bin/perl -w

use strict;
use warnings;

use YUCO::Test qw( Test1 Test2 Test3 );

Test1( 'a ar' );
Test2( 'b lo' );
Test3( '..c..' );

Test1();
Test2();
Test3();

он имеетвывод, подобный этому, который имеет некоторую странную / случайную последовательность вывода:

ok from Test2, and a is : b lo
ok from Test3, and a is : ..c..
ok from Test2, and a is :
ok from Test3, and a is :
ok from Test1, and a is : a ar
ok from Test1, and a is :

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

1 Ответ

2 голосов
/ 21 января 2012

Возможно, вы захотите проверить, как программа-кодировщик искажает ваши любимые, выполнив следующие действия:

use Data::Dumper qw<Dumper>;

$Data::Dumper::Deparse = 1;

say Dumper( \&YUCO::Test::Test1 );

Возможно, это может дать вам подсказку.

...