作者Neisseria (Neisseria)
看板Perl
标题Re: [问题] print时依字元长度自动换行?
时间Wed Nov 26 17:30:02 2014
※ 引述《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 等内容,算是一本抵以上两本
参考看看
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.71.94.31
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Perl/M.1416994208.A.0D6.html
1F:推 CindyLinz: List::Gen.. (笔记) 11/26 20:54
2F:推 b13b46o2: 我用linux不能跑use List::Gen qw(range); 版本问题吗? 11/27 09:08
3F:→ Neisseria: List::Gen 只是用来建数列,不是非装不可 11/27 11:35
4F:→ Neisseria: 用 cpan 装,很快就装好了。Google 一下 local::lib 吧 11/27 11:37
5F:推 b13b46o2: 谢谢 不过这是公司电脑好相簿能自己装 没权限 11/27 14:41
6F:推 CindyLinz: 用 local::lib 应该就不需要管理者权限.. 11/27 18:15
7F:→ CindyLinz: 我没用过 local::lib, 我为了测不同版本的 perl 所以用 11/27 18:15
8F:→ CindyLinz: perlbrew.. 也是不需要管理者权限 11/27 18:16
※ 编辑: Neisseria (60.251.46.166), 12/24/2018 16:21:08