L'ultimo comma in Perl elenco

Gli elementi in un elenco in un linguaggio di programmazione Perl sono separati con l'operatore virgola ,. Ecco un esempio il codice che crea una matrice in cui si trova 3 elementi:

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three');

Perl, a differenza, ad esempio, JSON consente di specificare una virgola alla fine dell'elenco. Questo codice crea esattamente lo stesso array come in passato, esempio:

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three',);

Questa matrice è composta da tre elementi. Quello che alla fine non c'è una virgola che non influisce. È stato possibile potrebbe supporre che la presenza di un punto e virgola alla fine dell'elenco aggiungerà undef come ultimo valore, ma no, questo non accade. Se la virgola alla fine della lista o no — questo non influisce come Perl interpreta questa lista.

Raccomandazione

Linguaggio di programmazione Perl comunque — se in un elenco di finale virgola o no, ma i programmi sono scritti non solo per loro capito Perl, ma per loro hanno capito la gente. C'è quindi la seguente raccomandazione, se seguito, il codice diventa solo un po 'più facile da leggere e un po' più facile da modificare.

La raccomandazione è la seguente:

  • se l'elenco registrato una stringa, poi l'ultimo punto e virgola non dovrebbe essere
  • se ogni elemento di un elenco scritto in una riga separata, dopo l'ultimo elemento deve essere una virgola

Da questa raccomandazione è necessario che

  • se durante il funzionamento la lista cambia, prima è stato registrato in una sola riga, ed è stato registrato per valore in una riga, è necessario aggiungere la virgola finale
  • e se multilinea elenco viene creato un elenco in una sola riga, il finale di una virgola bisogno di rimuovere

Ecco un esempio di codice in cui viene rispettato questa raccomandazione:

▶ Run
#!/usr/bin/perl

my @arr1 = ('one', 'two', 'three');

my @arr2 = (
    'one',
    'two',
    'three',
);

my %h = (
    a => 1,
    b => 2,
);

Se in una lista in cui ogni elemento registrato nella riga no certo punto e virgola e si deve aggiungere un altro elemento alla fine dell'elenco, quello di diff sarà composto da una remota di comando e due aggiunte:

diff --git a/script.pl b/script.pl
index 5634af0..eabe2f1 100644
--- a/script.pl
+++ b/script.pl
@@ -3,5 +3,6 @@
 my @arr = (
     'one',
     'two',
-    'three'
+    'three',
+    'four'
 );

Se la stessa raccomandazione viene rispettato e alla fine di questo elenco è il fine ultimo comma, il diff è composto da una comprensibile riga:

diff --git a/script.pl b/script.pl
index 8575677..82b3adf 100644
--- a/script.pl
+++ b/script.pl
@@ -4,4 +4,5 @@ my @arr = (
     'one',
     'two',
     'three',
+    'four',
 );

Altri articoli