Il codice/hash effettivo è più complesso. L'hash è: $ rotation_hash {output} {pavimento} {$ colo} {$ type} {$ hostname} {file} {$ filename} = <html_status_code>
Come altri hanno detto, quando si chiede su l'esistenza di $foo{bar}{fubar}
, Perl crea automaticamente $foo{bar}
per verificare se esiste $foo{bar}{fubar}
. Se si desidera evitare ciò, è necessario verificare se esiste $foo{bar}
e, in tal caso, verificare se esiste $foo{bar}{fubar}
.
Tuttavia, quello che ha attirato la mia attenzione è stato il tuo hash a sette strati. Quando le tue strutture dati iniziano a diventare così complesse, dovresti davvero usare la codifica Perl Object Oriented. So che molte persone sono spaventate dalla programmazione orientata agli oggetti in Perl, ma Perl è probabilmente uno dei linguaggi più facili da usare per le persone che scelgono OOP.
Se per nient'altro, si utilizza OOP per lo stesso motivo per cui si utilizza use strict;
. Quando I use strict;
, Perl raccoglierà facilmente dove ho usato $foobar
come variabile in un posto, ma poi mi riferisco ad esso come $fubar
in un altro posto. Si perde questa protezione con strutture dati complesse. Ad esempio, potresti inserire $rotation_hash{output}{oor}
in un posto, ma $rotation_hash{oor}{output}
in un altro luogo e lo use strict
non lo prenderà. Tuttavia, se si dichiarano oggetti tramite package
e si utilizzano le subroutine come metodi e costruttori, si ottiene di nuovo tale valore.
La progettazione orientata agli oggetti consente inoltre di eliminare la necessità di tenere traccia della struttura dei dati. Gli oggetti gestiscono questi per te e puoi concentrarti sulla tua codifica. E non devi creare più file. È possibile semplicemente allegare le definizioni dell'oggetto nella parte inferiore del file.
Ci sono some eccellente tutorials incluso nella documentazione Perl. Se non hai familiarità con OOP Perl, dovresti passare attraverso le esercitazioni e fare un tentativo.
fonte
2012-03-20 16:15:22
+1 per la raccomandazione di 'use strict' –
Il codice/hash effettivo è più complesso. L'hash è: $ rotation_hash {output} {oor} {$ colo} {$ tipo} {$ hostname} {file} {$ nomefile} =. È un'utilità per scansionare migliaia di host e creare un breve report che mi indichi quali caselle sono fuori rotazione. Ad esempio, potrebbe avere il seguente aspetto: $ rotation_hash {output} {oor} {ac4} {www} {www10.foo.com} {files} {status.html} = 200 –
gdanko