in reply to Why isn't my global matching regex working?

You might find this code helpful. I wrote this as a Perl version of a Python lab assignment. If there is no entry for a column, you get undef. HTML::TableExtract might not be the most up to date module for this, however, this worked well. Multiple tables can be in the html page, here there is only one.
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use HTML::TableExtract; my @db; my $raw_html = do { open my $in, '<', 'lab8input.txt' or die "Can't open lab8input.txt + $!"; local $/ = undef; <$in>; }; my $te = new HTML::TableExtract( headers => ['Course', 'Course\s+Name', "Fall", "Winter", "Spring", "Summer"]); + $te->parse($raw_html); # Examine all matching tables foreach my $ts ( $te->table_states ) { # print "Table (", join(',', $ts->coords), "):\n"; # there's only o +ne table! foreach my $row ( $ts->rows ) { @$row = map{$_//=''}@$row; #set undef cols to empty string my @quarter_flags = (@$row)[-4..-1]; my @quarters; push @quarters,'Fall' if shift @quarter_flags; push @quarters,'Winter' if shift @quarter_flags; push @quarters,'Spring' if shift @quarter_flags; push @quarters,'Summer' if shift @quarter_flags; push @db, [@$row[0], @$row[1], join(',',@quarters)]; # print join( ',', @$row ), "\n"; } } print Dumper \@db; __END__ @db looks like this: 3 columns: Course,Name,Quarters offered (if any +listed) [ 'CIS 95B', 'Project Planning and Control - A Practicum', 'Fall,Spring' ],