楼主:
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 等内容,算是一本抵以上两本
参考看看