"Exporter" : "0",
"List::Util" : "0",
"Scalar::Util" : "0",
- "perl" : "5.008009"
+ "perl" : "5.008001"
}
},
"test" : {
use strict;
use warnings;
-use 5.008009;
+use 5.008001;
use ExtUtils::MakeMaker;
},
"DISTNAME" => "DOM-Tiny",
"LICENSE" => "artistic_2",
- "MIN_PERL_VERSION" => "5.008009",
+ "MIN_PERL_VERSION" => "5.008001",
"NAME" => "DOM::Tiny",
"PREREQ_PM" => {
"Carp" => 0,
-requires 'perl' => '5.008009';
+requires 'perl' => '5.008001';
requires 'Carp';
requires 'Exporter';
requires 'List::Util';
use List::Util;
use Scalar::Util 'blessed';
+use constant REDUCE => ($] >= 5.008009 ? \&List::Util::reduce : \&_reduce);
+
our $VERSION = '0.002';
sub new {
sub reduce {
my $self = shift;
@_ = (@_, @$self);
- goto &List::Util::reduce;
+ goto &{REDUCE()};
}
sub reverse { $_[0]->new(reverse @{$_[0]}) }
map { _ref($_) ? _flatten(@$_) : $_ } @_;
}
+# For perl < 5.8.9
+sub _reduce (&@) {
+ my $code = shift;
+
+ return shift unless @_ > 1;
+
+ my $caller = caller;
+
+ no strict 'refs';
+
+ local(*{$caller."::a"}) = \my $a;
+ local(*{$caller."::b"}) = \my $b;
+
+ $a = shift;
+ foreach (@_) {
+ $b = $_;
+ $a = &{$code}();
+ }
+
+ $a;
+}
+
sub _ref { ref $_[0] eq 'ARRAY' || blessed $_[0] && $_[0]->isa(__PACKAGE__) }
1;
is $dom->tree->[7][1], ' bad idea -- HTML4 ', 'right comment';
SKIP: {
- skip 'Regex subexpression recursion causes SIGSEGV on 5.8', 1 if $] < 5.010000;
+ skip 'Regex subexpression recursion causes SIGSEGV on 5.8', 1 unless $] >= 5.010000;
# Huge number of attributes
$dom = DOM::Tiny->new('<div ' . ('a=b ' x 32768) . '>Test</div>');
is $dom->at('div[a=b]')->text, 'Test', 'right text';