Operatøren . i Perl

Dot operatøren bruges i Perl for sammenkædning (forbindelse) linjer.

Eksempel:

▶ Run
#!/usr/bin/perl

print 'ABC' . 'DEF';

Programmet vil vise string 'ABCDEF'.

I dette eksempel, dot operatøren er anvendt på to linjer er skrevet i programmet kode (disse linjer kaldes "strengkonstanter").

Typisk operander af operatøren punkt . er strengkonstanter, skalar variabler, eller resultaterne af andre funktioner.

Strenge og tal

Operatøren . altid arbejder med deres argumenter som strenge. Resultatet af alle disse fire operationer vil være den samme linje '11'.

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

Og det er fint. Det kan være absolut ingen problemer med at sammenkæde numre til strenge — og resultatet er præcis som forventet.

Brug array som operand

Her er et eksempel på et program, hvor en række sammenkædet med strenge ved hjælp af operatøren .:

▶ Run
#!/usr/bin/perl

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

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

Programmet vil vise string 'A3B'.

'A' . @arr . 'B' er det samme som at 'A' . scalar(@arr) . 'B'.

Når du bruger array operatør punkt . array brugt i skalar sammenhæng og et array i skalar sammenhæng returnerer antallet af elementer i denne serie.

Bruger hash som operand

Her er en prøve på programmet, hvor hash sammenkædet med strenge ved hjælp af operatøren .:

▶ Run
#!/usr/bin/perl

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

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

Afhængigt af Perl version, vil programmet vise enten en streng af form 'A2/8B', eller en streng 'A2B'.

'A' . %h . 'B' er det samme som at 'A' . scalar(%h) . 'B'.

På samme måde som i array tilfælde, når du bruger en hash med operatøren punkt . hash er anvendes i skalar sammenhæng.

Perl er 5,26 hash i skalar sammenhæng returnerer antallet af par af elementer i denne hash. Og i den version af Perl til 5,26 hash i skalar sammenhæng returnerer oplysninger om den interne struktur af hash.

Brug links på Sabu som operand

Her er et eksempel på et program som link til Saba sammenkædet med strenge ved hjælp af operatøren .:

▶ Run
#!/usr/bin/perl

my $sub = sub {
   return 42;
};

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

Perl til version 5.22 viser noget som ACODE(0x1452f00)B, startende fra 5.22 på skærmen det vil være omtrent det samme sted, men der vil være flere cifre efter 0x: ACODE(0x561e87413ed8)B.

Forskellige kørsler af programmet vil vise forskellige numre.

'A' . $sub . 'B' er de samme som 'A' . scalar($sub) . 'B'. Når du bruger i skalar sammenhæng en anonym Saba returnerer en streng af form CODE(0x10dbf00) (oplysninger om hvor i hukommelsen, er koden til at Saba, denne viden bør være meget sjældne).

Underscore _

For at sammenkæde strenge i Perl, vi bruger operatøren punkt .. Erklæringen understreger _ i Perl ikke. Men operatøren _ ligger i det populære Perl-bibliotek for Template::Toolkit, og i dette bibliotek, der bruges til sammenkædning.

utf8 flag

I dette tilfælde, hvis den sammenkædning deltager i mindst én række, som har en intern flag, hvilket betyder, at indholdet er utf-8-kodet, så den resulterende række flag, vil også blive. Her er et eksempel, der bekræfter, at dette problem:

▶ 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

Relaterede emner

Andre artikler