Aşağıdaki komut dosyası:
#!/usr/bin/env perl
#mytest.pl
no warnings;
$bar = "this";
@bar = qw/ 1 2 3 4 5 /;
%bar = qw/ key value /;
open bar, '<', 'mytest.pl' or die $!;
sub bar {
return "Sub defined as 'bar()'";
}
$main::{foo} = $main::{bar};
print "The scalar \$foo holds $foo\n";
print "The array \@foo holds @foo\n";
print "The hash \%foo holds ", %foo, "\n";
my $line = <foo>;
print "The filehandle 'foo' is reads ", $line;
print 'The function foo() replies "', foo(), "\"\n";
Çıkışlar:
Yani
The scalar $foo holds this
The array @foo holds 1 2 3 4 5
The hash %foo holds keyvalue
The filehandle 'foo' is reads #!/usr/bin/env perl
The function foo() replies "Sub defined as 'bar()'"
*main::foo = *main::bar;
$main::{foo} = $main::{bar};
aynı şeyi yapmazsa, ben pratik bir algılamaya nasıl bir kayıp am farkı. Bununla birlikte, bir sözdizimi perspektifinden, bir yöntemin diğerine göre daha kolay kullanıldığı durumlar olabilir. ... sembol tablosunda dolanmanın olağan uyarıları her zaman geçerlidir.
Bunu ne getirdiğini merak ediyorum. :) –
Birincisi, katı 'subs' veya sıkı etkinleştirildiğinde bir hataya neden olur, ikinciye izin verilir. – MkV
Birkaç metot ismini bir araya getirmek için bir döngü yazıyordum ve neden her zaman neden yazdığımı merak etmeye başladım. * {'some :: pkg'. $ new} = * {'bazı :: pkg'. $ eski} '$ bazı olduğunda :: pkg :: {$ new} = $ bazı :: pkg :: {$ eski } 'de iyi çalışırdı. Sezgisel olarak aynı görünürler, ancak kopyalar/aşırı yüklenmeler/diğer büyü gibi şeyler, kopyasını farklı bir şekilde ele alırlarsa, ya bir hata ya da amaçlanmış bir davranış olarak “ilginç” sonuçlara sahip olabilirler. –