1 2 3 4 5 6 7 8 9
#!/usr/bin/perl use strict; use warnings; require 'test2.pl'; sub test { print "foo\n"; }
1 2 3 4 5 6 7 8
#!/usr/bin/perl use strict; use warnings; sub test { print "bar\n"; } 1;
QuoteSubroutine test redefined at test2.pl line 5.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
use strict;
use warnings;
{
package test2;
require 'test2.pl';
}
sub test {
print "foo\n";
}
test();
test2::test();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#!/usr/bin/perl use strict; use warnings; sub hauptsub { print "foobar\n"; } { package test2; require 'test2.pl'; } sub test { print "foo\n"; } test(); test2::test();
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl use strict; use warnings; hauptsub(); #main::hauptsub(); würde funktionieren, soll aber vermieden werden sub test { print "bar\n"; } 1;
QuoteUndefined subroutine &test2::hauptsub called at test2.pl line 5.
2012-07-28T09:27:05 pqinteressiert dich wahrscheinlich nicht, aber das ganze sieht vom design her furchtbar aus, und wenn man die chance hat, da jetzt was zu ändern, dann sollte man das tun.
sowas ist immer code von der sorte, bei dem man die hände über dem kopf zusammenschlägt, wenn man maintainer wird.
2012-07-28T11:42:23 pqvon modulen oder generell eingebundenen "skripten" subroutinen aus dem hauptskript aufzurufen halte ich nicht für sinnvoll (bzw. kann mir keinen sinnvollen fall vorstellen).
diese subroutinen gehören auch ausgelagert.
2012-07-28T11:59:23 biancaWenn ich sie auslagere bräuchte ich ja in jedem Script nochmal ein require, oder wie meinst du das?
2012-07-28T12:52:39 ?ja, wo ist das problem? die eine zeile zu schreiben?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
package utils; use strict; use warnings; use feature qw( say ); use Exporter qw( import ); our @EXPORT_OK = qw( print_1 print_2 ); our %EXPORT_TAGS = ( foo => [ qw( print_1 ) ], bar => [ qw( print_2 ) ], ); sub print_1 { say "1: ", @_; } sub print_2 { say "2: ", @_; } 1;
1 2 3 4 5 6 7 8 9 10
#! /usr/bin/perl -I. use strict; use warnings; use utils qw( :foo print_2 ); print_1 "Hallo Welt."; print_2 "Wie geht's?"; __END__