#!/usr/bin/perl -W

# TP texte en perl
#
# Question II - 1
# 
# Antoine Miné
# 26/01/2007

$vide=1;  # la dernière ligne était-elle vide ?

while (<>)
{
    # l'ordre est important!
    s/([(\[])\s*/ $1/g;  # mange les espace après ( [ et ajoute-en un avant
    s/\s*([)\]])/$1 /g;  # mange les espace avant ) ] et ajoute-en un après
    s/([;:!?])/ $1 /g;   # ajoute un espace avant ; : ! ?
    s/\s*([.,])/$1 /g;   # mange les espace avant , . et ajoute-en un après
    s/\s+/ /g;           # mange les espaces multiples
    s/^\s*//g;           # mange les espaces en début de ligne
    s/\s*$//g;           # mange les espaces en fin de ligne

    # mange les lignes vides multiples
    next if ($vide==1 && $_ eq "");
    $vide= $_ eq "";

    # finalement, affiche la ligne-résultat
    print "$_\n";
}
