簡體   English   中英

觸發器運算符/ readline-counter問題

[英]flip-flop-operator/readline-counter question

閱讀此Perl:從1到n提取行(在Windows中)我不了解flip-flopoperator / readline-counter部分。

perl -nE 'say $c if $c=1..3' my_file 

1個
2
3E0

有人可以詳細解釋此輸出的來源嗎?

引用perlop

在標量上下文中,“ .. ”返回布爾值。 運算符是雙穩態的,就像觸發器一樣,它模擬sedawk和各種編輯器的行范圍(逗號)運算符。 每個“ .. ”運算符都保持自己的布爾狀態,即使在包含該狀態的子例程的調用之間也是如此。 只要其左操作數為false,它就是false。 一旦左操作數為true,則范圍運算符將保持為true,直到右操作數為true,此后范圍運算符將再次變為false。 直到下次評估范圍運算符時,它才會變為假。 它可以測試正確的操作數,並在變為true的相同評估中變為false(如在awk中一樣 ),但一次仍返回true。 如果您不希望它在下一次求值之前測試正確的操作數,如sed中所示 ,只需使用三個點(“ ... ”)而不是兩個。 在所有其他方面,“ ... ”的行為與“ .. ”的行為相同。

當運算符處於“ false”狀態時,不評估右操作數,而當運算符處於“ true”狀態時,不評估左操作數。 優先級略低於|| && 返回的值是空字符串(如果為false)或序列號(從1開始)為true(真)。 將為遇到的每個范圍重置序列號。 范圍中的最后一個序列號附加有字符串“ E0” ,它不影響其數值,但是如果要排除端點,則可以進行搜索。 您可以通過等待序列號大於1來排除起點。

如果標量“ .. ”的任何一個操作數是一個常量表達式,則該操作數如果等於( == )當前輸入行號( $.變量),則認為該操作數為true。

(強調)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM