日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Perl的输出:print、say和printf、sprintf

發布時間:2025/6/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Perl的输出:print、say和printf、sprintf 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

print、printf和say都可以輸出信息。print和say類似,print不自帶換行符,say自帶換行符,但要使用say,必須寫use語句use 5.010;,printf像C語言的printf一樣,可以定制輸出格式,不過我這perl似乎不支持printf,一用就報錯,不知道為什么。它們有返回值:如果輸出成功,就返回1。

注意perl中有上下文的概念,這幾個輸出操作也同樣有上下文環境:列表上下文。

@arr=qw(hello world); print "hello world","\n"; print "hello world\n"; print @arr; # 輸出helloworld(沒空格) print "@arr"; # 輸出hello world(有空格) use 5.010; say "hello world!"; # 自帶換行符

這些本沒有什么可解釋的,但是print/say可以以函數格式(print(args)/say(args))進行輸出,這時候有個陷阱需要注意。

print(3+4)*4;

這個返回7,而不是28。這是怎么計算的?

Perl中很多時候是可以省略括號的,這往往讓我們忘記括號的歸屬。而Perl中又有上下文的概念,在不同上下文執行同一個操作的結果是不一樣的。在這里:

  • print不加括號的時候,它需求的參數是一個列表上下文,它后面的所有內容都會被print輸出
  • print加括號的時候,它只會輸出括號中的內容

所以,上面的語句等價于:

(print(3+4))*4

它先執行print(7),然后拿到print的返回值1,將其乘以4,由于沒有賦值給其它變量,所以這個乘法的結果被丟棄。

如果將上面賦值給一個變量:

$num = print(3+4)*4;

則$num的值將為4。

如果想要輸出(3+4)*4=28的結果,可以將它們放在一個括號里,或者在(3+4)的括號前加一個+號,它表示讓它后面的表達式作為函數的參數,相當于加個括號。所以,下面兩個是等價的語句:

print ((3+4)*4); print +(3+4)*4;

另外,由于print/say不使用括號的時候,它們會輸出其后面的列表。所以有以下技巧:

  • 像cat命令一樣,直接輸出文件內容:print <>;
  • 像sort命令一樣,排序文件內容:print sort <>;

轉載于:https://www.cnblogs.com/f-ck-need-u/p/9557517.html

總結

以上是生活随笔為你收集整理的Perl的输出:print、say和printf、sprintf的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。