diff options
author | Jesse Luehrs <doy@tozt.net> | 2011-01-25 19:10:53 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2011-01-25 19:10:53 -0600 |
commit | 39813bfb03d6a4d8f8a1401f90db9ce9b73583e9 (patch) | |
tree | cc2dc7da1c3a7f4a616d0f2f0ab364ef55e14bb9 /lib/circular/require.pm | |
parent | 0312852d41b045f02621903d92111bfed2547a4e (diff) | |
download | circular-require-39813bfb03d6a4d8f8a1401f90db9ce9b73583e9.tar.gz circular-require-39813bfb03d6a4d8f8a1401f90db9ce9b73583e9.zip |
handle 'require VERSION' properly on 5.8
Diffstat (limited to 'lib/circular/require.pm')
-rw-r--r-- | lib/circular/require.pm | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/circular/require.pm b/lib/circular/require.pm index d5586ac..c4d6e1f 100644 --- a/lib/circular/require.pm +++ b/lib/circular/require.pm @@ -42,12 +42,16 @@ my $saved; sub _require { my ($file) = @_; - if (exists $seen{$file} && !$seen{$file}) { - warn "Circular require detected: $file (from " . caller() . ")\n"; + # on 5.8, if a value has both a string and numeric value, require will + # treat it as a vstring, so be sure we don't use the incoming value in + # string contexts at all + my $string_file = $file; + if (exists $seen{$string_file} && !$seen{$string_file}) { + warn "Circular require detected: $string_file (from " . caller() . ")\n"; } - $seen{$file} = 0; + $seen{$string_file} = 0; my $ret = $saved ? $saved->($file) : CORE::require($file); - $seen{$file} = 1; + $seen{$string_file} = 1; return $ret; } |