⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 anonsub.t

📁 UNIX下perl实现代码
💻 T
字号:
#!./perlchdir 't' if -d 't';@INC = '../lib';$Is_VMS = $^O eq 'VMS';$Is_MSWin32 = $^O eq 'MSWin32';$ENV{PERL5LIB} = "../lib" unless $Is_VMS;$|=1;undef $/;@prgs = split "\n########\n", <DATA>;print "1..", scalar @prgs, "\n";$tmpfile = "asubtmp000";1 while -f ++$tmpfile;END { if ($tmpfile) { 1 while unlink $tmpfile; } }for (@prgs){    my $switch = "";    if (s/^\s*(-\w+)//){       $switch = $1;    }    my($prog,$expected) = split(/\nEXPECT\n/, $_);    open TEST, ">$tmpfile";    print TEST "$prog\n";    close TEST;    my $results = $Is_VMS ?                  `MCR $^X "-I[-.lib]" $switch $tmpfile 2>&1` :		      $Is_MSWin32 ?  			  `.\\perl -I../lib $switch $tmpfile 2>&1` :			      `./perl $switch $tmpfile 2>&1`;    my $status = $?;    $results =~ s/\n+$//;    # allow expected output to be written as if $prog is on STDIN    $results =~ s/runltmp\d+/-/g;    $results =~ s/\n%[A-Z]+-[SIWEF]-.*$// if $Is_VMS;  # clip off DCL status msg    $expected =~ s/\n+$//;    if ($results ne $expected) {       print STDERR "PROG: $switch\n$prog\n";       print STDERR "EXPECTED:\n$expected\n";       print STDERR "GOT:\n$results\n";       print "not ";    }    print "ok ", ++$i, "\n";}__END__sub X {    my $n = "ok 1\n";    sub { print $n };}my $x = X();undef &X;$x->();EXPECTok 1########sub X {    my $n = "ok 1\n";    sub {        my $dummy = $n;	# eval can't close on $n without internal reference	eval 'print $n';	die $@ if $@;    };}my $x = X();undef &X;$x->();EXPECTok 1########sub X {    my $n = "ok 1\n";    eval 'sub { print $n }';}my $x = X();die $@ if $@;undef &X;$x->();EXPECTok 1########sub X;sub X {    my $n = "ok 1\n";    eval 'sub Y { my $p = shift; $p->() }';    die $@ if $@;    Y(sub { print $n });}X();EXPECTok 1

⌨️ 快捷键说明

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