Các nhà điều hành . trong Perl

Các dấu chấm được sử dụng trong Perl cho nối (kết nối) đường.

Ví dụ:

▶ Run
#!/usr/bin/perl

print 'ABC' . 'DEF';

Chương trình sẽ hiển thị các chuỗi 'ABCDEF'.

Trong ví dụ này, các dấu chấm được áp dụng cho hai dòng viết trong chương trình mã (những dòng này được gọi là "chuỗi chữ").

Thông thường, toán hạng của các nhà điều hành điểm . là chuỗi chữ, vô biến, hoặc các kết quả của các chức năng khác.

Dây và số

Các nhà điều hành . luôn luôn làm việc với lập luận của họ như dây. Các kết quả của tất cả các hoạt động sẽ được cùng một dòng '11'.

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

Và đó là tốt. Nó có thể hoàn toàn không có vấn đề để nối số để chuỗi — và kết quả là chính xác như dự kiến.

Sử dụng các mảng như toán hạng

Đây là một ví dụ về một chương trình mà một mảng nối với dây sử dụng điều hành .:

▶ Run
#!/usr/bin/perl

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

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

Chương trình sẽ hiển thị các chuỗi 'A3B'.

'A' . @arr . 'B' là giống như 'A' . scalar(@arr) . 'B'.

Khi sử dụng các mảng điều hành điểm . mảng được sử dụng trong vô bối cảnh và một mảng trong vô bối cảnh trở về số nguyên tố trong mảng này.

Sử dụng băm như toán hạng

Đây là một mẫu trong chương trình mà các băm nối với dây sử dụng điều hành .:

▶ Run
#!/usr/bin/perl

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

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

Tùy thuộc vào Perl phiên bản, chương trình sẽ hiển thị hoặc là một chuỗi các hình thức 'A2/8B', hoặc một chuỗi 'A2B'.

'A' . %h . 'B' là giống như 'A' . scalar(%h) . 'B'.

Giống như trong mảng trường hợp khi sử dụng một băm với các nhà điều hành điểm . băm là được sử dụng trong vô bối cảnh.

Perl 5.26 băm vô trong bối cảnh trở về số cặp của các yếu tố trong băm này. Và trong phiên bản của Perl để 5.26 băm vô trong bối cảnh trở về thông tin về cấu trúc bên trong của băm.

Sử dụng kết họ lại như toán hạng

Đây là một ví dụ về một chương trình liên kết đến Saba nối với dây sử dụng điều hành .:

▶ Run
#!/usr/bin/perl

my $sub = sub {
   return 42;
};

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

Perl đến phiên bản 5.22 hiển thị một cái gì đó như ACODE(0x1452f00)B, bắt đầu từ 5.22 trên màn hình nó sẽ là khoảng cùng một chỗ, nhưng sẽ có thêm nhiều chữ số sau 0x: ACODE(0x561e87413ed8)B.

Chạy khác nhau của chương trình sẽ cho số khác nhau.

'A' . $sub . 'B' là giống như 'A' . scalar($sub) . 'B'. Khi sử dụng trong vô bối cảnh của một kẻ vô danh Saba trở về một chuỗi các hình thức CODE(0x10dbf00) (thông tin về nơi trong bộ nhớ là mã cho rằng Saba, kiến thức này phải rất hiếm).

Gạch dưới _

Để nối dây trong Perl, chúng tôi sử dụng các nhà điều hành điểm .. Những tuyên bố nhấn mạnh _ trong Perl không. Nhưng các nhà điều hành _ là phổ biến trong Perl thư viện cho Mẫu::công Cụ và trong thư viện này, nó được sử dụng cho nối.

utf8 cờ

Trong trường hợp đó, nếu nối có một phần trong một ít hàng trong đó có một lá cờ, có nghĩa là nội dung được utf8-mã hóa, sau đó dẫn đến hàng cờ này sẽ cũng được. Đây là một ví dụ khẳng định rằng hành vi này:

▶ 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

Chủ đề liên quan

Các bài viết khác