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

📄 extqlk.t

📁 source of perl for linux application,
💻 T
字号:
BEGIN {    if ($ENV{PERL_CORE}) {        chdir('t') if -d 't';        @INC = qw(../lib);    }}#! /usr/local/bin/perl -ws# Before `make install' is performed this script should be runnable with# `make test'. After `make install' it should work as `perl test.pl'######################### We start with some black magic to print on failure.# Change 1..1 below to 1..last_test_to_print .# (It may become useful if the test is moved to ./t subdirectory.)BEGIN { $| = 1; print "1..95\n"; }END {print "not ok 1\n" unless $loaded;}use Text::Balanced qw ( extract_quotelike );$loaded = 1;print "ok 1\n";$count=2;use vars qw( $DEBUG );#$DEBUG=1;sub debug { print "\t>>>",@_ if $ENV{DEBUG} }sub esc   { my $x = shift||'<undef>'; $x =~ s/\n/\\n/gs; $x }######################### End of black magic.$cmd = "print";$neg = 0;while (defined($str = <DATA>)){	chomp $str;	if ($str =~ s/\A# USING://)                 { $neg = 0; $cmd = $str; next; }	elsif ($str =~ /\A# TH[EI]SE? SHOULD FAIL/) { $neg = 1; next; }	elsif (!$str || $str =~ /\A#/)              { $neg = 0; next }	my $setup_cmd = ($str =~ s/\A\{(.*)\}//) ? $1 : '';	my $tests = 'sl';	$str =~ s/\\n/\n/g;	my $orig = $str;	eval $setup_cmd if $setup_cmd ne ''; 	if($tests =~ /l/) {		debug "\tUsing: $cmd\n";		debug "\t   on: [" . esc($setup_cmd) . "][" . esc($str) . "]\n";		my @res;		eval qq{\@res = $cmd; };		debug "\t  got:\n" . join "", map { "\t\t\t$_: [" . esc($res[$_]) . "]\n"} (0..$#res);		debug "\t left: [" . esc($str) . "]\n";		debug "\t  pos: [" . esc(substr($str,pos($str))) . "...]\n";		print "not " if (substr($str,pos($str),1) eq ';')==$neg;		print "ok ", $count++;		print "\n";	}	eval $setup_cmd if $setup_cmd ne '';	if($tests =~ /s/) {		$str = $orig;		debug "\tUsing: scalar $cmd\n";		debug "\t   on: [" . esc($str) . "]\n";		$var = eval $cmd;		print " ($@)" if $@ && $DEBUG;		$var = "<undef>" unless defined $var;		debug "\t scalar got: [" . esc($var) . "]\n";		debug "\t scalar left: [" . esc($str) . "]\n";		print "not " if ($str =~ '\A;')==$neg;		print "ok ", $count++;		print "\n";	}}# fails in Text::Balanced 1.95$_ = qq(s{}{});my @z = extract_quotelike();print "not " if $z[0] eq '';print "ok ", $count++;print "\n"; __DATA__# USING: extract_quotelike($str);'';"";"a";'b';`cc`;<<EOHERE; done();\nline1\nline2\nEOHERE\n; next;     <<EOHERE; done();\nline1\nline2\nEOHERE\n; next;<<"EOHERE"; done()\nline1\nline2\nEOHERE\n and next<<`EOHERE`; done()\nline1\nline2\nEOHERE\n and next<<'EOHERE'; done()\nline1\n'line2'\nEOHERE\n and next<<'EOHERE;'; done()\nline1\nline2\nEOHERE;\n and next<<"   EOHERE"; done() \nline1\nline2\n   EOHERE\nand next<<""; done()\nline1\nline2\n\n and next<<; done()\nline1\nline2\n\n and next# fails in Text::Balanced 1.95<<EOHERE;\nEOHERE\n; # fails in Text::Balanced 1.95<<"*";\n\n*\n; "this is a nested $var[$x] {";/a/gci;m/a/gci;q(d);qq(e);qx(f);qr(g);qw(h i j);q{d};qq{e};qx{f};qr{g};qq{a nested { and } are okay as are () and <> pairs and escaped \}'s };q/slash/;q # slash #;qr qw qx;s/x/y/;s/x/y/cgimsox;s{a}{b};s{a}\n {b};s(a){b};s(a)/b/;s/'/\\'/g;tr/x/y/;y/x/y/;# fails on Text-Balanced-1.95{ $tests = 'l'; pos($str)=6 }012345<<E;\n\nE\n# THESE SHOULD FAILs<$self->{pat}>{$self->{sub}};		# CAN'T HANDLE '>' in '->'s-$self->{pap}-$self->{sub}-;		# CAN'T HANDLE '-' in '->'<<EOHERE; done();\nline1\nline2\nEOHERE;\n; next;	    # RDEL HAS NO ';'<<'EOHERE'; done();\nline1\nline2\nEOHERE;\n; next;	    # RDEF HAS NO ';'     <<    EOTHERE; done();\nline1\nline2\n    EOTHERE\n; next;  # RDEL IS "" (!)

⌨️ 快捷键说明

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