Re: [請益] replace 可以替換指定位置的字元嗎?
※ 引述《CindyLinz (尹兒)》之銘言:
: 閱讀以下內容可能對心理及生理造成深遠及不可恢復之影響,
: 建議你先做好心靈改革,事前請記得要戴上護眼罩,
: 事後亦要用大量清水洗眼,否則有可能......一概不負責!
: (防雷頁, 現在想離開還得及..)
: 有三點邪惡版:
: $a = '4321';
: $_ = 23 for( substr($a, 1, 2) );
: 這個的結果是 4231
for( substr($a, 1, 2) ) 這行把 $_ 設定為 $a 裡第1個字(從0開始算)開始2
個字的別名(Alias). 所以設定為23就改成4231了.
: 有四點邪惡版:
: $a = '4321';
: for( substr($a, 1, 2) ) {
: $a = '47531';
: $_ -= 73;
: }
: 這個的結果仍然是 4231
一樣.for( substr($a, 1, 2) ) 這行把 $_ 設定為 $a 裡第1個字(從0開始算)
開始2個字的別名(Alias). 把$a改成47531並不會改變這個別名.
所以此時$_為'75'
把它減73後就變成2了.
$a就1變成 '4' '2' '31' => '4231' 了.
: 有五點邪惡版:
: $a = '4321';
: for( substr($a, 1, 2) ) {
: $_ += 9999;
: $a = '46789031';
: $_ -= 67888;
: }
: 這個的結果依舊是 4231
原理同上, 自己推演一下就知道.
這些把戲蠻有趣的, 在 effective perl 這本書裡還有很多.
對Hacker來說,有些慣用法蠻常被使用的.
有些可以省下很多打字時間, 但對看不懂而要維護程式的人來說就是夢靨了.
但我個人認為, Perl 本質上是一個非常好的語言, 程式好寫, 速度快, 但近年來
退流行可能也是因為這些可怕的把戲, 畢竟對新人來說, 太多有字天書會造成維
護上的麻煩, 更可能菜鳥改一改產生奇怪的問題.....
要不然 perl 不用編譯, 又有資源回收功能, 而且在 Script 裡面應該是第一快
的, 怎麼會退流行這個快.
像 CGI 程式早年都是 perl 寫的, PHP 有的功能 perl都有, 而且執行得快的多
, PHP 會後來居上, 應該是程式碼維護性上的關係.
建議寫 perl 的人, 看看 Perl Best Practices, 返璞歸真一下, 盡量提昇程式
碼的可維護性, 畢竟你建立的系統總不希望只有你才能維護, 假如你有更大的舞
台可以發揮, 但找人來維護你建立的系統總是會有問題, 那你只好永遠被綁在那
裡了.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.67.195.213
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章