Blame


1 1ddd2d4e 2023-09-10 jrmu #!/usr/bin/perl
2 1ddd2d4e 2023-09-10 jrmu
3 1ddd2d4e 2023-09-10 jrmu # Modify the program from Exercise 2 to use Regexp::Assemble so you have
4 1ddd2d4e 2023-09-10 jrmu # one pattern instead of an array of patterns.
5 1ddd2d4e 2023-09-10 jrmu
6 1ddd2d4e 2023-09-10 jrmu use v5.24;
7 1ddd2d4e 2023-09-10 jrmu use warnings;
8 1ddd2d4e 2023-09-10 jrmu use strict;
9 1ddd2d4e 2023-09-10 jrmu use utf8;
10 1ddd2d4e 2023-09-10 jrmu use local::lib;
11 1ddd2d4e 2023-09-10 jrmu use Getopt::Std;
12 1ddd2d4e 2023-09-10 jrmu use Regexp::Assemble;
13 1ddd2d4e 2023-09-10 jrmu
14 1ddd2d4e 2023-09-10 jrmu my %opts;
15 1ddd2d4e 2023-09-10 jrmu getopt("p:", \%opts);
16 1ddd2d4e 2023-09-10 jrmu if (defined($opts{p}) && scalar(%opts) == 1) {
17 1ddd2d4e 2023-09-10 jrmu open my $fh, "<", $opts{p} or die "Unable to open '$opts{p}': $!";
18 1ddd2d4e 2023-09-10 jrmu my @patterns;
19 1ddd2d4e 2023-09-10 jrmu my $ra = Regexp::Assemble->new;
20 1ddd2d4e 2023-09-10 jrmu while (<$fh>) {
21 1ddd2d4e 2023-09-10 jrmu chomp;
22 1ddd2d4e 2023-09-10 jrmu $ra->add($_);
23 1ddd2d4e 2023-09-10 jrmu }
24 1ddd2d4e 2023-09-10 jrmu print "Type some input:\n\n";
25 1ddd2d4e 2023-09-10 jrmu while (<>) {
26 1ddd2d4e 2023-09-10 jrmu # print "$ra: $_\n";
27 1ddd2d4e 2023-09-10 jrmu my $re = $ra->re;
28 1ddd2d4e 2023-09-10 jrmu print "$.: $_" if /$re/;
29 1ddd2d4e 2023-09-10 jrmu #print "$.: $_" if $ra->match($_);
30 1ddd2d4e 2023-09-10 jrmu }
31 1ddd2d4e 2023-09-10 jrmu } else {
32 1ddd2d4e 2023-09-10 jrmu die "Usage: $0 -p file";
33 1ddd2d4e 2023-09-10 jrmu }