#!/usr/bin/env perl use Data::Dumper; use 5.14.0; my @data=( q{^46004 % Tamerlane.| Tamerlane - Sheridan; Bajazet - Barry; Moneses - A Gentleman; Arpasia - Mrs. Furnival; Selima - Mrs. Elmy; +} ,q{^46005 % Hamlet.| Hamlet - Sheridan; Polonius - J. Morris; Laertes- Lacy; Ophelia- Mrs. Storer; Queen - Mrs. Furnival; +} ); local $"='","';#" for (@data) { my %c_h; if (m{^\^(.+?) % (.+?)\.\|(?{$c_h{1}=$1; $c_h{2}=$2;}) ?(?:(.+?) *- *(.+?); ?(?{$c_h{3}=$3;$c_h{4}=$4; say qq{"@c_h{qw(1 2 3 4)}"}}))*}) { }; }; __DATA__