Server IP : 49.212.180.16 / Your IP : 3.16.215.60 Web Server : Apache System : FreeBSD www2606.sakura.ne.jp 13.0-RELEASE-p14 FreeBSD 13.0-RELEASE-p14 #2: Mon Dec 9 13:54:55 JST 2024 root@www5301.sakura.ne.jp:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64 User : utannto ( 1076) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/rs/perl/cpanel/lib/perl5/5.8/ |
Upload File : |
# assert.pl # tchrist@convex.com (Tom Christiansen) # # Usage: # # &assert('@x > @y'); # &assert('$var > 10', $var, $othervar, @various_info); # # That is, if the first expression evals false, we blow up. The # rest of the args, if any, are nice to know because they will # be printed out by &panic, which is just the stack-backtrace # routine shamelessly borrowed from the perl debugger. sub assert { &panic("ASSERTION BOTCHED: $_[$[]",$@) unless eval $_[$[]; } sub panic { package DB; select(STDERR); print "\npanic: @_\n"; exit 1 if $] <= 4.003; # caller broken # stack traceback gratefully borrowed from perl debugger local $_; my $i; my ($p,$f,$l,$s,$h,$a,@a,@frames); for ($i = 0; ($p,$f,$l,$s,$h,$w) = caller($i); $i++) { @a = @args; for (@a) { if (/^StB\000/ && length($_) == length($_main{'_main'})) { $_ = sprintf("%s",$_); } else { s/'/\\'/g; s/([^\0]*)/'$1'/ unless /^-?[\d.]+$/; s/([\200-\377])/sprintf("M-%c",ord($1)&0177)/eg; s/([\0-\37\177])/sprintf("^%c",ord($1)^64)/eg; } } $w = $w ? '@ = ' : '$ = '; $a = $h ? '(' . join(', ', @a) . ')' : ''; push(@frames, "$w&$s$a from file $f line $l\n"); } for ($i=0; $i <= $#frames; $i++) { print $frames[$i]; } exit 1; } 1;