nargv.t

来自「UNIX下perl实现代码」· T 代码 · 共 64 行

T
64
字号
#!./perlprint "1..5\n";my $j = 1;for $i ( 1,2,5,4,3 ) {    $file = mkfiles($i);    open(FH, "> $file") || die "can't create $file: $!";    print FH "not ok " . $j++ . "\n";    close(FH) || die "Can't close $file: $!";}{    local *ARGV;    local $^I = '.bak';    local $_;    @ARGV = mkfiles(1..3);    $n = 0;    while (<>) {	print STDOUT "# initial \@ARGV: [@ARGV]\n";	if ($n++ == 2) {	    other();	}	show();    }}$^I = undef;@ARGV = mkfiles(1..3);$n = 0;while (<>) {    print STDOUT "#final \@ARGV: [@ARGV]\n";    if ($n++ == 2) {	other();    }    show();}sub show {    #warn "$ARGV: $_";    s/^not //;    print;}sub other {    print STDOUT "# Calling other\n";    local *ARGV;    local *ARGVOUT;    local $_;    @ARGV = mkfiles(5, 4);    while (<>) {	print STDOUT "# inner \@ARGV: [@ARGV]\n";	show();    }}sub mkfiles {    my @files = map { "scratch$_" } @_;    return wantarray ? @files : $files[-1];}END { unlink map { ($_, "$_.bak") } mkfiles(1..5) }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?