From ea2dd4c149d78e54c66a3400d2b0ecec5c959a40 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 4 Jan 2012 18:02:30 -0600 Subject: if an entire cycle is hidden, don't show something from outside of it --- lib/circular/require.pm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/circular/require.pm b/lib/circular/require.pm index db1738f..9b69394 100644 --- a/lib/circular/require.pm +++ b/lib/circular/require.pm @@ -62,11 +62,13 @@ sub _require { if (exists $being_loaded{$string_file}) { my $caller = $current; - $caller = $being_loaded{$caller} - while defined($caller) && grep { m/^$caller$/ } @hide; - - $caller = '' - unless defined $caller; + while (grep { m/^$caller$/ } @hide) { + $caller = $being_loaded{$caller}; + if (!defined($caller) || $caller eq $string_file) { + $caller = ''; + last; + } + } warn "Circular require detected: $string_file (from $caller)\n"; } -- cgit v1.2.3-54-g00ecf