Re: [問題] print時依字元長度自動換行?

作者: Neisseria (Neisseria)   2014-11-26 17:30:02
※ 引述《b13b46o2 (買槍買裝備)》之銘言:
: ※ 引述《cutecpu (可愛中央處理器)》之銘言:
: : #!/usr/bin/perl -w
: : $_='aaaaaaaaabbbcddddd........zzzz';
: : s/(.{10})/$1\n/g;
: : print;
: 請問我該怎麼在有變數的情況下輸入數值10次以後次換行
比較簡單的方式是用 index 跑迴圈
以下是簡單的例子
use List::Gen qw(range);
my $r = range(100, 1, -1);
for my $i (0..$#$r) {
print $r->[$i], " ";
if ($i % 10 == 9) {
print "\n";
}
}
如果用數值本身跑迴圈,就要自己另外加 index 來計數
同樣附上一個簡單的例子
use List::Gen qw(range);
my $r = range(100, 1, -1);
my $i = 1;
for my $e (@{$r}) {
print "$e ";
if ($i % 10 == 0) {
print "\n";
}
$i++;
}
: for $a (1..100)
: {$_ = $a ;
: s/(.{10})/$1\n/g;
: print;
: }
: print"\n";
: 本來想說這樣能不能12345678910 之後換行後輸出11121314151617181920
: 但是後面想了一下
: 他輸入1之後就會先print完才會輸入2
: 但是為什麼輸出畫面是12345678910........100一直到一百才換行
: 不是應該1
: 2
: 3
: 這樣一直下去到100嗎?
其實,既然指明變數 $a 了,就一路將 $a 明白表示比較好,不過這是題外話
回到這個例子本身,trace 一下每次的 $a 實際的數值,就會知道原因
第一次 $a 是 1,經 regex 修改後仍然不變,再傳給 print 輸出
第二次 $a 是 2, 經 regex 修改後仍然不變,再傳給 print 輸出
以下同理
: s/(.{10})/$1\n/g;
: print;
: 這個也有放在{}之後但是迴圈已經是100輸入
: 所以輸出畫面只有寫100
: 請問我要怎麼在有變數的情況下輸出畫面10個個數以後換行??
: 新手入門,只從網路隨便亂看
: 有推薦哪本實體書可看得嗎(中文版)
比較經典的還是 Perl 學習手冊 和 Perl 進階手冊 這兩本
然後 Programming Perl 視自己的需要買,也可以直接上網查 reference
我自己是看 Beginning Perl by Curtis "Ovid" Poe
雖然是英文的,但比較新,有 cover Moose 等內容,算是一本抵以上兩本
參考看看
作者: CindyLinz (Cindy Wang)   2014-11-26 20:54:00
List::Gen.. (筆記)
作者: b13b46o2 (買槍買裝備)   2014-11-27 09:08:00
我用linux不能跑use List::Gen qw(range); 版本問題嗎?
作者: Neisseria (Neisseria)   2014-11-27 11:35:00
List::Gen 只是用來建數列,不是非裝不可用 cpan 裝,很快就裝好了。Google 一下 local::lib 吧
作者: b13b46o2 (買槍買裝備)   2014-11-27 14:41:00
謝謝 不過這是公司電腦好相簿能自己裝 沒權限
作者: CindyLinz (Cindy Wang)   2014-11-27 18:15:00
用 local::lib 應該就不需要管理者權限..我沒用過 local::lib, 我為了測不同版本的 perl 所以用perlbrew.. 也是不需要管理者權限

Links booklink

Contact Us: admin [ a t ] ucptt.com