my @regexes; if ($param eq 'mod') { @regexes = ... } else { @regexes = ... } #### &[^;]+;\s&[^;]+; #### #!/usr/bin/perl use warnings; use strict; my ($infile, $param) = @ARGV; my @regexes = $param ? (qr/&[^;]+;\s&[^;]+;/) : (qr/–§/, qr/–Ü/, qr/ߧ/); open my $in, '<', $infile or die "Cannot open $infile for reading: $!"; my $xml; { local $/; $xml = <$in>; } open my $out, '>', 'pairs.txt' or die $!; print {$out} "Find pair of entities without/with separating space\n\ninput file: "; print {$out} "$infile"; print {$out} "\n========================================================================\n\n"; for my $i (0 .. $#regexes) { my $regex = $regexes[$i]; $regex =~ s/^\(\?\^://; $regex =~ s/\)$//; print {$out} "$regex: $1\n" while $xml =~ /($regex)/g; } close $in; close $out;