- 论坛徽章:
- 0
|
第一个程序如下:
#!/usr/bin/perl -w
use strict;
my @i = ('1', '2', '3');
my @j = ('a', 'b', 'c');
print "In main program before calling subroutine: i = " ."@i\n";
print "In main program before calling subroutine: j = " ."@j\n";
reference_sub(@i, @j);
print "In main program after calling subroutine: i = " ."@i\n";
print "In main program after calling subroutine: j = " ."@j\n";
exit;
sub reference_sub {
my(@i, @j) = @_;
print "In subroutine : i = " . "@i\n";
print "In subroutine : j = " . "@j\n";
push(@i, '4');
shift(@j);
}
结果:
In main program before calling subroutine: i = 1 2 3
In main program before calling subroutine: j = a b c
In subroutine : i = 1 2 3 a b c
In subroutine : j =
In main program after calling subroutine: i = 1 2 3
In main program after calling subroutine: j = a b c
第二个程序如下:
#!/usr/bin/perl
use strict;
use warnings;
my @i = ('1', '2', '3');
my @j = ('a', 'b', 'c');
print "In main program before calling subroutine: i = " ."@i\n";
print "In main program before calling subroutine: j = " ."@j\n";
reference_sub(\@i, \@j);
print "In main program after calling subroutine: i = " ."@i\n";
print "In main program after calling subroutine: j = " ."@j\n";
exit;
sub reference_sub {
my($i, $j) = @_;
print "In subroutine : i = " . "@$i\n";
print "In subroutine : j = " . "@$j\n";
push(@$i, '4');
shift(@$j);
}
结果:
In main program before calling subroutine: i = 1 2 3
In main program before calling subroutine: j = a b c
In subroutine : i = 1 2 3
In subroutine : j = a b c
In main program after calling subroutine: i = 1 2 3 4
In main program after calling subroutine: j = b c
我现在不能理解的是子程序中的这两句:
push(@$i, '4');
shift(@$j);
为何在第一个程序中这两句不起作用,而第二个中起到了作用,并烦劳大家讲解一个这两句在程序中的意思,尽管单独列出这两句我能理解,但是在这两个程序中我却不理解了!!
谢谢!! |
|