( Foltos | 2012. 05. 09., sze – 22:12 )

Nos akkor 2. nekifutás:

while( $file_content =~ s/([^']+?)('[^']*?')//sm )
{
my $pre=$1;
my $middle=$2;

$pre =~ s/\s+/ /g;

$result=$result.$pre.$middle;
}

A /s az elején azér kell, hogy 2x ne találjuk meg ugyan azt a részt.
A +? a "non greedy match" azaz nem a lehető leghoszabb részre illik, hanem a legkisebbre.

A cucc feltételezi, hogy a teljes inputot előzőleg beolvastuk $file_content -be. Az eredményt meg ki kell írni a végén valahová. Ha a bemenetben soronkénti rekordok vannak, akkor ezen lehet finomítani.
Szerintem ez alapján el lehet indulni.