Debido a la forma más tediosa de agregar hosts a ser monitoreados en Nagios (requiere definir un objeto host, a diferencia del programa anterior que solo requería el IP y nombre de host), pensé que sería mejor automatizar esto, y sería un gran momento para aprender Perl, porque todo lo que sé en este momento es C/C++ y Java.Perl: Asir las palabras delimitadas enésima y mestima de cada línea en un archivo
El archivo que he leído desde el siguiente aspecto:
xxx.xxx.xxx.xxx hostname #comments. i.dont. care. about
Todo lo que quiero son los primeros 2 manojos de caracteres. Obviamente, estos están delimitados por espacios, pero para mayor generalidad, podría ser cualquier cosa. Para hacerlo más general, ¿por qué no el primero y el tercero, o el cuarto y el décimo? Seguramente debe haber alguna acción de expresión regular involucrada, pero dejaré esa etiqueta por el momento, por las dudas.
Diría que es más idiomático hacer una asignación de lista: por ejemplo, ($ ip, $ hostname) = ($ 1, $ 2) en el primer caso, o ($ ip, $ hostname) = (split '', $ line) [0,1] en el segundo. (El 0,1 es solo en caso de que las personas quieran usar otros números. Si no, ($ ip, $ hostname) = split '', $ line funcionará bien. –
No, más idiomático sería "if (my ($ ip, $ hostname) = $ line = ~/(\ S +) \ s + (\ S +) /) {". – ysth
Ambos tienen razón, pero no soy de la opinión que idiomatic == mejor. – slim