my $tablename = 'mytable'; my $sqlcontent = <<'EOS'; /* create statement before the insert */ CREATE TABLE `mytable` ( `id` int, `content` varchar(1000) ) ENGINE=InnoDB; INSERT INTO `mytable` VALUES (1,'abc\"xyz\"'),(2,'blah') ; UNLOCK TABLES; EOS my ($statements, $values) = $sqlcontent =~ /CREATE\s+TABLE\s+`${tablename}`\s+(\(.+\))\s+ENGINE=.+?;\s+ .+?INSERT\s+INTO\s+`${tablename}`\s+VALUES\s+(.+?);\s+ .*?UNLOCK\s+TABLES; /sx ; # Below is problematic but works for restricted cases my @values = eval $values; die $@ if $@; print join("\n", @values)."\n";