L'operatore . in Perl

L'operatore punto viene utilizzato in Perl per la concatenazione di stringhe (giunti) di righe.

Esempio:

▶ Run
#!/usr/bin/perl

print 'ABC' . 'DEF';

Il programma visualizza una riga 'ABCDEF'.

In questo esempio, l'operatore punto si applica a due righe scritte nel codice del programma (ad stringhe sono chiamati "letterali").

Di solito come operandi dell'operatore punto . sono i valori letterali stringa, scalari o i risultati del lavoro di altre funzioni.

Stringhe e numeri

L'operatore . funziona sempre con i tuoi argomenti come con le stringhe. Il risultato di tutti questi quattro operazioni la stessa stringa '11'.

  • 1 . 1
  • 1 . '1'
  • '1' . 1
  • '1' . '1'

E questo è un bene. È completamente senza problemi конкатенировать i numeri a righe — e il risultato sarà esattamente così come ti aspetti.

L'utilizzo di una matrice come operando

Ecco un esempio di programma di cui matrice конкатенируется con le stringhe con l'aiuto dell'operatore .:

▶ Run
#!/usr/bin/perl

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

print 'A' . @arr . 'B';

Il programma visualizza una riga 'A3B'.

'A' . @arr . 'B' è lo stesso che 'A' . scalar(@arr) . 'B'.

Quando si utilizza un array con l'operatore punto . matrice utilizzata in скалярном contesto, e la matrice in скалярном contesto restituisce il numero di elementi nell'array.

L'uso di hash come operando

Ecco un esempio di programma di cui hash конкатенируется con le stringhe con l'aiuto dell'operatore .:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 'one',
    b => 'two',
);

print 'A' . %h . 'B';

A seconda della versione di Perl il programma visualizzerà sullo schermo o una stringa del tipo 'A2/8B', oppure una stringa di 'A2B'.

'A' . %h . 'B' è lo stesso che 'A' . scalar(%h) . 'B'.

Allo stesso modo, come nel caso di un array, quando si utilizza un hash con l'operatore punto . hash sarà utilizzato in скалярном contesto.

A partire dalla versione di Perl 5.26 hash in скалярном contesto restituisce il numero di coppie di elementi in questo хеше. E in versione di Perl a 5.26 hash in скалярном contesto restituisce informazioni sul dispositivo interno di hash.

L'uso di collegamenti a sabu come operando

Ecco un esempio di programma in cui il collegamento di sabu конкатенируется con le stringhe con l'aiuto dell'operatore .:

▶ Run
#!/usr/bin/perl

my $sub = sub {
   return 42;
};

print 'A' . $sub . 'B';

Perl alla versione 5.22 verrà visualizzato qualcosa di simile ACODE(0x1452f00)B, a partire dal 5.22 sullo schermo sarà circa lo stesso punto, solo che non ci sarà più cifre dopo 0x: ACODE(0x561e87413ed8)B.

Diversi lanci il programma mostrerà diversi numeri.

'A' . $sub . 'B' è lo stesso che e 'A' . scalar($sub) . 'B'. Quando si utilizza in скалярном contesto anonima saba restituisce una stringa del tipo CODE(0x10dbf00) (informazioni su dove nella memoria è il codice di questo sabi, la conoscenza di questo bisogno è molto raro).

Il carattere di sottolineatura _

Per la concatenazione di stringhe in Perl viene utilizzato l'operatore punto .. Operatore underscores _ in Perl meno. Ma l'operatore _ ci sono popolare Perl libreria di Template::Toolkit e in questa libreria viene utilizzato per la concatenazione di stringhe.

utf8 bandiera

Nel caso in cui l'concatenazione partecipa almeno una riga in cui c'è un flag interno, il che significa che il contenuto è in utf8, allora la risultante di comando così la bandiera sarà anche. Ecco un esempio di codice che conferma questo comportamento:

▶ Run
#!/usr/bin/perl

use utf8;

my $str_with_flag = 'раз-два-три';

my $str_without_flag = 'one-two-three';

print utf8::is_utf8($str_with_flag) . "\n"; # prints 1
print utf8::is_utf8($str_without_flag) . "\n"; # prints empty string

print utf8::is_utf8($str_with_flag . $str_without_flag) . "\n"; # prints 1
print utf8::is_utf8($str_without_flag . $str_with_flag) . "\n"; # prints 1

Temi correlati

Altri articoli