local $ARGV = ($templfile); my $i = ''; while (<>) { if ( /^\s*<\s*TEMPLATE\s+NAME="(.*)"\s*>/i ) { $i = $1; } elsif ( /^\s*<\s*\/\s*TEMPLATE\s*>/i ) { $i = ''; } else { $hashref->{$i} .= $_; } } # cleanup: delete $hashref->{''}; #### while (<>) { no warnings 'uninitialized'; /^\s*<\s*TEMPLATE\s+NAME="(.*?)"\s*>/i .. /^\s*<\s*\/\s*TEMPLATE\s*>/i and $h{$1} .= $_; } # cleanup delete $hashref->{''}; s/^\s*<\s*TEMPLATE\s+NAME="(.*?)"\s*>\s*//i for values %$hashref; #### local $/; local $_ = <>; %$hashref = /\s*<\s*TEMPLATE\s+NAME="(.*?)"\s*>(.*?)\s*<\s*\/\s*TEMPLATE\s*>/sig;