作者:
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 等內容,算是一本抵以上兩本
參考看看