Z powodu bardziej żmudnego dodawania hostów do monitorowania w Nagios (wymaga to zdefiniowania obiektu hosta, w przeciwieństwie do poprzedniego programu, który wymagał tylko IP i nazwa hosta), pomyślałem, że najlepiej będzie zautomatyzować to i byłby to świetny czas na naukę Perla, ponieważ wszystko, co wiem w tej chwili to C/C++ i Java.Perl: Chwytanie n-tego i mth ograniczonych słów z każdej linii w pliku
Plik czytam od wygląda następująco:
xxx.xxx.xxx.xxx hostname #comments. i.dont. care. about
Wszystko czego chcę to pierwsze 2 pęczki znaków. Są to oczywiście obszary ograniczone, ale ze względu na ogólność, równie dobrze może być cokolwiek. Aby było bardziej ogólne, dlaczego nie pierwszy i trzeci, czwarty i dziesiąty? Z pewnością musi to być pewne działanie z użyciem wyrażenia regularnego, ale na wszelki wypadek zostawię ten tag na razie.
Powiedziałbym, że bardziej idiomatyczne jest przypisywanie list: np. ($ Ip, $ nazwa hosta) = (1 $, 2 $) w pierwszym przypadku lub ($ ip, $ hostname) = (split '', $ line) [0,1] w drugim. (0,1 jest na wypadek, gdyby ludzie chcieli używać innych liczb, jeśli nie, ($ ip, $ hostname) = split '', linia $ zadziała poprawnie. –
Nie, bardziej idiomatyczna byłaby "if (my ($ ip, $ hostname) = $ line = ~/(\ S +) \ s + (\ S +) /) {". – ysth
Obaj macie rację, ale nie jestem zdania, że idiomatyczne == lepiej . – slim