Tôi biết một chút perl, nhưng không đủ sâu để hiểu tiếp theo.Mã perl lạ - tìm kiếm giải thích
Đọc perldelta 5.18 tôi tìm thấy đoạn mã tiếp theo là đã bị vô hiệu hóa trong 5,18. Không đếm điều này, vẫn muốn hiểu nó hoạt động như thế nào.
Đây là mã và trong các ý kiến là những gì tôi hiểu
%_=(_,"Just another "); #initialize the %_ hash with key=>value _ => 'Just another'
$_="Perl hacker,\n"; #assign to the $_ variable with "Perl..."
s//_}->{_/e; # darkness. the /e - evauates the expression, but...
print
nó in:
Just another Perl hacker,
tôi đã cố gắng, các perl -MO=Deparse
và nhận tiếp theo
(%_) = ('_', 'Just another '); #initializing the %_ hash
$_ = "Perl hacker,\n"; # as above
s//%{'_';}/e; # substitute to the beginning of the $_ - WHAT?
print $_; # print the result
japh syntax OK
gì là lạ (ít nhất là đối với tôi) - chạy mã "deparsed" không cho kết quả ban đầu và pr ints:
1/8Perl hacker,
tôi sẽ rất hạnh phúc:
- nếu ai đó có thể giải thích mã, đặc biệt là nếu ai đó có thể viết một mã helper, (với các bước bổ sung) những gì giúp tôi hiểu nó như thế nào là công trình - chuyện gì xảy ra.
- giải thích, tại sao mã không được in ra không in kết quả ban đầu.
Điều gì có nghĩa là số %{'_';}
trong mã bị thiếu?
Tôi không thể giải thích mọi thứ, nhưng vì lý do nào đó '' _} -> {_ '' trong regex tương đương với '' $ {_} {_} '' (tự nó có vẻ vui, nhưng không phải quá không đọc được). – mzedeler
Những gì tôi không nhận được là làm thế nào các nhà điều hành mũi tên bằng cách nào đó được gobbled lên, bởi vì nó chỉ nên làm việc nếu '' $ _'' là một tham chiếu băm. – mzedeler