http://qs321.pair.com?node_id=352721

this function reads an ASP file (yes, sometimes I have to fight with such stuff) separating code blocks from HTML blocks. the function returns an array where each element is a 2-element array. the first element is either "HTM" or "ASP", and the second one is the block itself. ASP tags (<% and %>) are removed.

cheers,
Aldo

sub get_asp_blocks { my($file) = @_; open(FILE, $file) or die "can't open '$file': $!\n"; my @blocks = ( ["HTM", ""] ); my $state = "HTM"; my $last; while(read(FILE, $char, 1)) { if($last eq "<" && $char eq "%" && $state eq "HTM") { chop $blocks[-1][1]; $state = "ASP"; push(@blocks, ["ASP", ""]); } elsif($last eq "%" && $char eq ">" && $state eq "ASP") { chop $blocks[-1][1]; $state = "HTM"; push(@blocks, ["HTM", ""]); } else { $blocks[-1][1] .= $char; } $last = $char; } close(FILE); return @blocks; }