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

📄 lex.t

📁 UNIX下perl实现代码
💻 T
字号:
#!./perlprint "1..51\n";$x = 'x';print "#1	:$x: eq :x:\n";if ($x eq 'x') {print "ok 1\n";} else {print "not ok 1\n";}$x = $#;	# this is the register $#if ($x eq '') {print "ok 2\n";} else {print "not ok 2\n";}$x = $#x;if ($x eq '-1') {print "ok 3\n";} else {print "not ok 3\n";}$x = '\\'; # ';if (length($x) == 1) {print "ok 4\n";} else {print "not ok 4\n";}eval 'while (0) {    print "foo\n";}/^/ && (print "ok 5\n");';eval '$foo{1} / 1;';if (!$@) {print "ok 6\n";} else {print "not ok 6 $@\n";}eval '$foo = 123+123.4+123e4+123.4E5+123.4e+5+.12;';$foo = int($foo * 100 + .5);if ($foo eq 2591024652) {print "ok 7\n";} else {print "not ok 7 :$foo:\n";}print <<'EOF';ok 8EOF$foo = 'ok 9';print <<EOF;$fooEOFeval <<\EOE, print $@;print <<'EOF';ok 10EOF$foo = 'ok 11';print <<EOF;$fooEOFEOEprint <<`EOS` . <<\EOF;echo ok 12EOSok 13EOFprint qq/ok 14\n/;print qq(ok 15\n);print qq[ok 16\n];print q<ok 17>;print <<;   # Yow!ok 18# previous line intentionally left blank.print <<E1 eq "foo\n\n" ? "ok 19\n" : "not ok 19\n";@{[ <<E2 ]}fooE2E1print <<E1 eq "foo\n\n" ? "ok 20\n" : "not ok 20\n";@{[  <<E2fooE2]}E1$foo = FOO;$bar = BAR;$foo{$bar} = BAZ;$ary[0] = ABC;print "$foo{$bar}" eq "BAZ" ? "ok 21\n" : "not ok 21\n";print "${foo}{$bar}" eq "FOO{BAR}" ? "ok 22\n" : "not ok 22\n";print "${foo{$bar}}" eq "BAZ" ? "ok 23\n" : "not ok 23\n";print "FOO:" =~ /$foo[:]/ ? "ok 24\n" : "not ok 24\n";print "ABC" =~ /^$ary[$A]$/ ? "ok 25\n" : "not ok 25\n";print "FOOZ" =~ /^$foo[$A-Z]$/ ? "ok 26\n" : "not ok 26\n";# MJD 19980425($X, @X) = qw(a b c d); print "d" =~ /^$X[-1]$/ ? "ok 27\n" : "not ok 27\n";print "a1" !~ /^$X[-1]$/ ? "ok 28\n" : "not ok 28\n";print (((q{{\{\(}} . q{{\)\}}}) eq '{{\(}{\)}}') ? "ok 29\n" : "not ok 29\n");$foo = "not ok 30\n";$foo =~ s/^not /substr(<<EOF, 0, 0)/e;  IgnoredEOFprint $foo;# Tests for new extended control-character variables# MJD 19990227{ my $CX = "\cX";  my $CXY  ="\cXY";  $ {$CX} = 17;  $ {$CXY} = 23;  if ($ {^XY} != 23) { print "not "  }  print "ok 31\n"; # Does the syntax where we use the literal control character still work?  if (eval "\$ {\cX}" != 17 or $@) { print "not "  }  print "ok 32\n";  eval "\$\cN = 24";                 # Literal control character  if ($@ or ${"\cN"} != 24) {  print "not "  }  print "ok 33\n";  if ($^N != 24) {  print "not "  }  # Control character escape sequence  print "ok 34\n";# Does the old UNBRACED syntax still do what it used to?  if ("$^XY" ne "17Y") { print "not " }  print "ok 35\n";  sub XX () { 6 }  $ {"\cN\cXX"} = 119;   $^N = 5; #  This should be an unused ^Var.  $N = 5;  # The second caret here should be interpreted as an xor  if (($^N^XX) != 3) { print "not " }   print "ok 36\n";#  if (($N  ^  XX()) != 3) { print "not " } #  print "ok 32\n";  # These next two tests are trying to make sure that  # $^FOO is always global; it doesn't make sense to `my' it.  #   eval 'my $^X;';  print "not " unless index ($@, 'Can\'t use global $^X in "my"') > -1;  print "ok 37\n";#  print "($@)\n" if $@;  eval 'my $ {^XYZ};';  print "not " unless index ($@, 'Can\'t use global $^XYZ in "my"') > -1;  print "ok 38\n";#  print "($@)\n" if $@;# Now let's make sure that caret variables are all forced into the main package.  package Someother;  $^N = 'Someother';  $ {^Nostril} = 'Someother 2';  $ {^M} = 'Someother 3';  package main;  print "not " unless $^N eq 'Someother';  print "ok 39\n";  print "not " unless $ {^Nostril} eq 'Someother 2';  print "ok 40\n";  print "not " unless $ {^M} eq 'Someother 3';  print "ok 41\n";  }# see if eval '', s///e, and heredocs mixsub T {    my ($where, $num) = @_;    my ($p,$f,$l) = caller;    print "# $p:$f:$l vs /$where/\nnot " unless "$p:$f:$l" =~ /$where/;    print "ok $num\n";}my $test = 42;{# line 42 "plink"    local $_ = "not ok ";    eval q{	s/^not /<<EOT/e and T '^main:\(eval \d+\):2$', $test++;# fuggedabouditEOT        print $_, $test++, "\n";	T('^main:\(eval \d+\):6$', $test++);# line 1 "plunk"	T('^main:plunk:1$', $test++);    };    print "# $@\nnot ok $test\n" if $@;    T '^main:plink:53$', $test++;}# tests 47--51 start here# tests for new array interpolation semantics:# arrays now *always* interpolate into "..." strings.# 20000522 MJD (mjd@plover.com){  my $test = 47;  eval(q(">@nosuch<" eq "><")) || print "# $@", "not ";  print "ok $test\n";  ++$test;  # Look at this!  This is going to be a common error in the future:  eval(q("fred@example.com" eq "fred.com")) || print "# $@", "not ";  print "ok $test\n";  ++$test;  # Let's make sure that normal array interpolation still works right  # For some reason, this appears not to be tested anywhere else.  my @a = (1,2,3);  print +((">@a<" eq ">1 2 3<") ? '' : 'not '), "ok $test\n";  ++$test;  # Ditto.  eval(q{@nosuch = ('a', 'b', 'c'); ">@nosuch<" eq ">a b c<"})       || print "# $@", "not ";  print "ok $test\n";  ++$test;  # This isn't actually a lex test, but it's testing the same feature  sub makearray {    my @array = ('fish', 'dog', 'carrot');    *R::crackers = \@array;  }  eval(q{makearray(); ">@R::crackers<" eq ">fish dog carrot<"})    || print "# $@", "not ";  print "ok $test\n";  ++$test;}

⌨️ 快捷键说明

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