diff options
author | Jesse Luehrs <doy@tozt.net> | 2012-01-04 18:02:30 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2012-01-04 18:02:30 -0600 |
commit | ea2dd4c149d78e54c66a3400d2b0ecec5c959a40 (patch) | |
tree | c2d97880439669968a75757b005e8c9527c34613 /lib | |
parent | 79b443187ee06d8ee7eedc29012e2b68235e3cd1 (diff) | |
download | circular-require-ea2dd4c149d78e54c66a3400d2b0ecec5c959a40.tar.gz circular-require-ea2dd4c149d78e54c66a3400d2b0ecec5c959a40.zip |
if an entire cycle is hidden, don't show something from outside of it
Diffstat (limited to 'lib')
-rw-r--r-- | lib/circular/require.pm | 12 |
1 files changed, 7 insertions, 5 deletions
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 = '<unknown package>' - unless defined $caller; + while (grep { m/^$caller$/ } @hide) { + $caller = $being_loaded{$caller}; + if (!defined($caller) || $caller eq $string_file) { + $caller = '<unknown file>'; + last; + } + } warn "Circular require detected: $string_file (from $caller)\n"; } |