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

📄 gv.t

📁 UNIX下perl实现代码
💻 T
字号:
#!./perl## various typeglob tests#BEGIN {    chdir 't' if -d 't';    @INC = '../lib';}   use warnings;print "1..40\n";# type coersion on assignment$foo = 'foo';$bar = *main::foo;$bar = $foo;print ref(\$bar) eq 'SCALAR' ? "ok 1\n" : "not ok 1\n";$foo = *main::bar;# type coersion (not) on misc opsif ($foo) {  print ref(\$foo) eq 'GLOB' ? "ok 2\n" : "not ok 2\n";}unless ($foo =~ /abcd/) {  print ref(\$foo) eq 'GLOB' ? "ok 3\n" : "not ok 3\n";}if ($foo eq '*main::bar') {  print ref(\$foo) eq 'GLOB' ? "ok 4\n" : "not ok 4\n";}# type coersion on substitutions that match$a = *main::foo;$b = $a;$a =~ s/^X//;print ref(\$a) eq 'GLOB' ? "ok 5\n" : "not ok 5\n";$a =~ s/^\*//;print $a eq 'main::foo' ? "ok 6\n" : "not ok 6\n";print ref(\$b) eq 'GLOB' ? "ok 7\n" : "not ok 7\n";# typeglobs as lvaluessubstr($foo, 0, 1) = "XXX";print ref(\$foo) eq 'SCALAR' ? "ok 8\n" : "not ok 8\n";print $foo eq 'XXXmain::bar' ? "ok 9\n" : "not ok 9\n";# returning glob valuessub foo {  local($bar) = *main::foo;  $foo = *main::bar;  return ($foo, $bar);}($fuu, $baa) = foo();if (defined $fuu) {  print ref(\$fuu) eq 'GLOB' ? "ok 10\n" : "not ok 10\n";}if (defined $baa) {  print ref(\$baa) eq 'GLOB' ? "ok 11\n" : "not ok 11\n";}# nested package globs# NOTE:  It's probably OK if these semantics change, because the#        fact that %X::Y:: is stored in %X:: isn't documented.#        (I hope.){ package Foo::Bar; no warnings 'once'; $test=1; }print exists $Foo::{'Bar::'} ? "ok 12\n" : "not ok 12\n";print $Foo::{'Bar::'} eq '*Foo::Bar::' ? "ok 13\n" : "not ok 13\n";# test undef operator clearing out entire glob$foo = 'stuff';@foo = qw(more stuff);%foo = qw(even more random stuff);undef *foo;print +($foo || @foo || %foo) ? "not ok" : "ok", " 14\n";# test warnings from assignment of undef to glob{    my $msg;    local $SIG{__WARN__} = sub { $msg = $_[0] };    use warnings;    *foo = 'bar';    print $msg ? "not ok" : "ok", " 15\n";    *foo = undef;    print $msg ? "ok" : "not ok", " 16\n";}# test *glob{THING} syntax$x = "ok 17\n";@x = ("ok 18\n");%x = ("ok 19" => "\n");sub x { "ok 20\n" }print ${*x{SCALAR}}, @{*x{ARRAY}}, %{*x{HASH}}, &{*x{CODE}};*x = *STDOUT;print *{*x{GLOB}} eq "*main::STDOUT" ? "ok 21\n" : "not ok 21\n";print {*x{IO}} "ok 22\n";print {*x{FILEHANDLE}} "ok 23\n";# test if defined() doesn't create any new symbols{    my $test = 23;    my $a = "SYM000";    print "not " if defined *{$a};    ++$test; print "ok $test\n";    print "not " if defined @{$a} or defined *{$a};    ++$test; print "ok $test\n";    print "not " if defined %{$a} or defined *{$a};    ++$test; print "ok $test\n";    print "not " if defined ${$a} or defined *{$a};    ++$test; print "ok $test\n";    print "not " if defined &{$a} or defined *{$a};    ++$test; print "ok $test\n";    *{$a} = sub { print "ok $test\n" };    print "not " unless defined &{$a} and defined *{$a};    ++$test; &{$a};}# although it *should* if you're talking about magicals{    my $test = 29;    my $a = "]";    print "not " unless defined ${$a};    ++$test; print "ok $test\n";    print "not " unless defined *{$a};    ++$test; print "ok $test\n";    $a = "1";    "o" =~ /(o)/;    print "not " unless ${$a};    ++$test; print "ok $test\n";    print "not " unless defined *{$a};    ++$test; print "ok $test\n";    $a = "2";    print "not " if ${$a};    ++$test; print "ok $test\n";    print "not " unless defined *{$a};    ++$test; print "ok $test\n";    $a = "1x";    print "not " if defined ${$a};    ++$test; print "ok $test\n";    print "not " if defined *{$a};    ++$test; print "ok $test\n";    $a = "11";    "o" =~ /(((((((((((o)))))))))))/;    print "not " unless ${$a};    ++$test; print "ok $test\n";    print "not " unless defined *{$a};    ++$test; print "ok $test\n";}# does pp_readline() handle glob-ness correctly?{    my $g = *foo;    $g = <DATA>;    print $g;}__END__ok 40

⌨️ 快捷键说明

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