⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.177
Server IP:
50.6.168.112
Server:
Linux server-617809.webnetzimbabwe.com 5.14.0-570.25.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 9 04:57:09 EDT 2025 x86_64
Server Software:
Apache
PHP Version:
8.4.10
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
.cpan
/
build
/
Sub-Uplevel-0.2800-0
/
t
/
View File Name :
03_nested_uplevels.t
#!/usr/bin/perl use strict; BEGIN { $^W = 1 } use Test::More; use Sub::Uplevel; package Wrap; use Sub::Uplevel; sub wrap { my ($n, $f, $depth, $up, @case) = @_; if ($n > 1) { $n--; return wrap( $n, $f, $depth, $up, @case ); } else { return uplevel( $up , $f, $depth, $up, @case ); } } package Call; sub recurse_call_check { my ($depth, $up, @case) = @_; if ( $depth ) { $depth--; my @result; push @result, recurse_call_check($depth, $up, @case, 'Call' ); for my $n ( 1 .. $up ) { push @result, Wrap::wrap( $n, \&recurse_call_check, $depth, $n, @case, $n == 1 ? "Wrap(Call)" : "Wrap(Call) x $n" ), ; } return @result; } else { my (@uplevel_callstack, @real_callstack); my $i = 0; while ( defined( my $caller = caller($i++) ) ) { push @uplevel_callstack, $caller; } $i = 0; while ( defined( my $caller = CORE::caller($i++) ) ) { push @real_callstack, $caller; } return [ join( q{, }, @case ), join( q{, }, reverse @uplevel_callstack ), join( q{, }, reverse @real_callstack ), ]; } } package main; my $depth = 4; my $up = 3; my $cases = 104; plan tests => $cases; my @results = Call::recurse_call_check( $depth, $up, 'Call' ); is( scalar @results, $cases, "Right number of cases" ); my $expected = shift @results; for my $got ( @results ) { is( $got->[1], $expected->[1], "Case: $got->[0]" ) or diag( "Real callers: $got->[2]" ); }