Что касается вашего первого метода , то, что вы можете сделать, это как первый разделить строку запятой , например
my $line =
'S1,F4 title including several white spaces (abbr) single,Here<->There,reply';
my ($field1, $field2, $field3, $field4) = split /,/, $line;
, а затем применить регулярное выражение в поле , связанное с подстрокой S1
и F2 title including several white spaces (abbr) single
подобно
my ($field5) = $field1 =~ /S(\d+)/;
my ($field6, $field7, $field8, $field9) =
$field2 =~ m/^F(\d+)\s+(.*?)\((.*?)\)\s+(.*?)$/;
Он будет работать для всех этих строк и поможет избежать использования и создания сложных регулярных выражений,
S1,F2 title including several white spaces (abbr) single,Here<->There,reply
S1,F2 title including several white spaces (abbr) single,Here<->There
S1,F2 title including several white spaces (abbr) single,Here<->There,[reply]