#!/usr/bin/perl use strict; use diagnostics; use 5.010; use Path::Tiny qw/ path /; my $raw = path("sample.vcd")->slurp_raw; my $re = qr{ \$end \$dumpoff \$end [\r\n ]+ (\#[\d]+) [\r\n ]+ \$dumpon \$end [\r\n ]+ (.*?) \#[\d]+ }sx; while( $raw =~ m/$re/g ){ my( $id, $tidy ) = ( $1, $2 ); say $1; say $2; }