in reply to Re^2: How to cache a regular expression in a DBIx::Class object
in thread How to cache a regular expression in a DBIx::Class object

It looks like DBIx::Class was re-creating objects every time.

Oh, I missed that part. There's a much easier for that - move the retrieval of the DBIx::Class objects out of the loop:

my @watchstrings = $schema->resultset('WatchString')->all while( my $line <INPUT> ) { for my $w (@watchstrings) { ... } }