La plus fantastique moyen de supprimer les retours à la ligne (en Perl

Je suis le maintien d'un script qui peut obtenir son entrée à partir de diverses sources, et travaille sur elle par ligne. En fonction de la source utilisée, mais les sauts de ligne peut être de type Unix, Windows, ou même, pour certains, agrégé d'entrée, mixte(!).

Lors de la lecture d'un fichier, il va quelque chose comme ceci:

@lines = <IN>;
process(\@lines);

...

sub process {
    @lines = shift;
    foreach my $line (@{$lines}) {
        chomp $line;
        #Handle line by line
    }
}

Donc, ce que je dois faire est de remplacer le chomp avec quelque chose qui supprime soit de type Unix ou Windows de style mais les sauts de ligne.
Je suis venue avec beaucoup trop de façons de résoudre cela, l'un de l'habitude inconvénients de Perl 🙂

Quelle est votre opinion sur la plus élégante façon de chomp hors générique mais les sauts de ligne? Ce qui serait le plus efficace?

Edit: Une petite précision - la méthode "process" permet d'obtenir une liste de lignes à partir de quelque part, pas nessecarily lire à partir d'un fichier. Chaque ligne peut avoir

  • Pas de fuite mais les sauts de ligne
  • De style Unix, mais les sauts de ligne
  • De style Windows retours à la ligne (
  • Juste Retour de Chariot (lorsque les données originales de style Windows mais les sauts de ligne, et il est lu avec $/= '\n')
  • Un agrégées ensemble où les lignes ont des styles différents
  • Si le <> opérateur reconnaît les retours à la ligne, à ne pas ronger?
  • Voir stackoverflow.com/questions/797993/...
  • Mais la <> opérateur ne reconnaît pas les retours à la ligne correctement, et en plus de l'utilisation de <> est un cas spécial, entrée ne sont pas toujours à partir d'un fichier.
  • exécuter le code, j'ai juste collé ou lire le joint de sortie qu'il génère. Vous aurez, je l'espère, le point que j'essaie de faire. Le "mixte" est de loin le pire.
InformationsquelleAutor Christoffer | 2009-05-19