Tôi tương đối mới đối với perl và có đoạn mã mẫu trong check_ilo2_health.pl trong đó có một cú pháp mà tôi không hiểu cách thức hoặc lý do hoạt động. Đoạn mã phân tích dữ liệu khách hàng SSL, trong trường hợp này là XML, từng dòng một.Perl, Gán cho biến từ đối sánh regex
if ($line =~ m/MESSAGE='/) {
my ($msg) = ($line =~ m/MESSAGE='(.*)'/); #<---- HERE
if ($msg !~ m/No error/) {
if ($msg =~ m/Syntax error/) { #...etc
Một ví dụ về XML trong câu hỏi:
<RESPONSE
STATUS="0x0000"
MESSAGE='No error'
/>
Vì vậy, trong trường hợp này nếu tuyên bố mất ĐIỆP dòng của mẫu XML. Tôi hiểu rằng ($ msg) của tôi coi biến đó là một loại danh sách và tôi hiểu cách các cụm từ thông dụng phù hợp; tuy nhiên, những gì tôi không hiểu là cú pháp sao cho $ msg là được gán đến Không có lỗi. Perl dường như được chơi xung quanh với cú pháp ngoặc đơn và như vậy cho điều này để làm việc. Trong khi nó hoạt động tôi muốn biết làm thế nào nó hoạt động. Bất kỳ trợ giúp sẽ được đánh giá cao.
Nếu bạn đang tham chiếu đến '= ~' hoặc '! ~', Đó là [toán tử liên kết] (http://perldoc.perl.org/perlop.html#Binding-Operators). –