Nuovo in Perl.Divisione selettiva di una stringa in Perl
Ho bisogno di analizzare un rapporto che assomigliano a questo:
[email protected]@[email protected]@[email protected]
ho usato:
my @fields = split(/@/, $line, 6);
maggior parte delle volte funziona benissimo, ma a volte il messaggio di errore conterrà un indirizzo email e tutto il testo dopo il simbolo @ su quell'email fino alla fine della stringa terminerà con il mio messaggio id.
Ho pensato di verificare la quantità di @s e di avere un parsing condizionale, ma c'è un modo migliore?
EDIT:
L'output desiderato è una lista di stringhe, con il messaggio di errore che contiene tutto ciò che è venuto in esso (compreso un indirizzo e-mail occasionale).
Dato che ci sono altre applicazioni che utilizzano lo stesso rapporto, non posso modificare il separatore o uscire dall'output.
linee campione sul rapporto:
[email protected]@[email protected]@440 4.4.1 Some error [email protected]
[email protected]@[email protected]@550 5.1.1 <[email protected]>... User [email protected]
[email protected]@[email protected]@550 5.1.1 [email protected] no such [email protected]
contenuti attesi @Campi dopo l'analisi linea 1:
2012-05-29
joedoe
example.com
AB99-5
440 4.4.1 Some error occurred
XYZ35
e dopo l'analisi di linea 2:
2012-05-29
foobar
invalid.com
ZZ88-6
550 5.1.1 <[email protected]>... User Unknow
GGH93
può chiarire che cosa l'output desiderato è? Un elenco di stringhe? – kevlar1818
è un po 'difficile da progettare lì, poiché il separatore ** potrebbe ** essere parte dei dati. Se hai accesso al generatore di rapporti, penserei di sfuggire al messaggio di errore o di modificare il carattere separatore ... – kratenko
Puoi dare un esempio del messaggio di errore speciale con l'indirizzo email? – simbabque