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


in reply to Perl code error

The || is being parsed wrong; use another delimiter for your s///. Also you have a couple of typos past that. A corrected version could look like:

my @files = qw(quotePAGE1 quotePAGE2); for (@files) { open IN, $_ or die "failed opening file $_, at"; $\ = "\n\n"; my $num = 0; my($chunk,$q_num,%s_nums,%auth,@s,%subj); while($chunk = <IN>) { ++$num; $chunk =~ s|^/-a(\S+)[^/n]*\n|| or die "no author? file $_, chunk $num; at"; $a = $1; while($chunk =~ s{/-s(\S+)[^\n]*\n/-q((?:.|\n)+?(?=/-))}{}) { $q_num = 0; $auth{$a}->[$q_num] = $2; @s = split /,/,$1; for (@s) { (undef($s_nums{$_}) && $s_nums{$_} == 0) || ($s +_nums{$_} += 1) } $subj{$_}->[$s_nums{$_}] = $2 for @s; } } }