LinuxSir.Org  
| 网站首页 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
置顶的主题 精华主题  
主题工具
旧 03-09-25, 11:04 第 16 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

实际上perl把string中第一个模式(i)和第三个模式(perl)分别赋予$1,$3,中间零个或多个字符串被赋予$2,即在模式(perl)之前到模式(i)之间的所有字符串都被赋予了$2.在perl中,(.*)是作为一个量词,那个*具有"贪婪性"...
这是我的理解,望指点!

此帖于 03-09-25 14:59 被 KornLee 编辑.
  KornLee 当前离线   回复时引用此帖
旧 03-09-27, 00:43 第 17 帖
Kevin 帅哥
 
Kevin 的头像
 
 
管理员  
  注册日期: Apr 2002
  帖子: 1,223
  精华: 0
 

http://www.yuzi.net/perl5/
这个站点不错,







__________________
2011年,LinuxSir 风雨四人行
  Kevin 当前离线   回复时引用此帖
旧 03-09-27, 14:18 第 18 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

怎么用chop ,chomp 命令是一样的结果,它们有什么区别?
  devel 当前离线   回复时引用此帖
旧 03-09-27, 14:42 第 19 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
最初由 devel 发表
怎么用chop ,chomp 命令是一样的结果,它们有什么区别?
引用:
chomp是chop的安全版本:他除去的字符与变量$?的当前值相对应,这个变量是perl中存放输入记录分隔符的特殊变量,他默认的值就是换行符.他返回去除的字符总数,而他通常用于去除一条记录末端的换行符,如果省略了变量,chomp则处理默认的变量$_.
上述说明引用自<<Perl Black Book>>
他们的使用方法基本一样,区别基本不大,都是去掉换行符.
  KornLee 当前离线   回复时引用此帖
旧 03-09-27, 22:07 第 20 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

# perl p1
4,3,3
# cat p1
#!/usr/bin/perl5
$a=2;
$b=++$a;
$c=$a++;
printf " $a,$b,$c\n";
#
:ask :ask
  devel 当前离线   回复时引用此帖
旧 03-09-27, 22:35 第 21 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
最初由 devel 发表
# perl p1
4,3,3
# cat p1
#!/usr/bin/perl5
$a=2;
$b=++$a;
$c=$a++;
printf " $a,$b,$c\n";
#
:ask :ask
嘻嘻~~,我的解释,不知道说得正确与否?
代码:
#!perl -w $a=2; $b=++$a; #++运算符放在变量$a之前,则先对变量$a进行增量,然后返回他的值,$b=3,此时,$a也增量至3,即:$a=3 $c=$a++; #++运算符放在变量$a之后,则先返回$a的值,再对$a进行增量,$c=3,此时,$a增量到4,即:$a=4 print "$a,$b,$c\n"; #现在,$a经过两次的增量,他的值就是4,而不是原来的2.由此看出,++运算符号所在的位置对变量的影响.
  KornLee 当前离线   回复时引用此帖
旧 03-09-28, 10:29 第 22 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

解释得明白。谢谢“)

请问这错在哪里?

# perl array
Unmatched right bracket at array line 1, at end of line
syntax error at array line 1, near "]"
Execution of array aborted due to compilation errors.
# perl array
Unmatched right bracket at array line 1, at end of line
syntax error at array line 1, near "]"
Execution of array aborted due to compilation errors.
# cat array
]#!/usr/bin/perl5
@num=(11,33,2,dd,0);
printf "@num\n";
$name="dear";
@list=(1..12,"hello",$name,"hello $name",4+6,1-2,2*3);
printf "@list\n";
@a=(-2.5..5.3,a..z,A..Z);
printf "@a\n";
printf "next\n";
@b=(1,"world",@num);
printf "@b\n";
printf "next\n";
@c=@num;
printf "@c\n";

#
--------------------------------
thanks

此帖于 03-09-28 11:23 被 devel 编辑.
  devel 当前离线   回复时引用此帖
旧 03-09-28, 10:46 第 23 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
]#!/usr/bin/perl5
如果没有[的话,没什么问题呀,,,
跟shell脚本的规则相似,perl首行的要求也是:
#!/usr/bin/perl或#!perl
  KornLee 当前离线   回复时引用此帖
旧 03-09-28, 13:33 第 24 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

谢谢版主。我太大意了.:o

又有问题了。
# perl t1
-1 0 1 2 3 4 5
-1 0 1 2 3 4 5
-1 0 1 2 3 4 5
-1 0 1 2 3 4 5
-1 0 1 2 3 4 5
-1 0 1 2 3 4 5
-5 -4 -3 -2 -1 0 1 2 3
# cat t1
#!/usr/bin/perl5
@num=(-1.2..5);
printf "@num\n";
@a=(-1.5..5);
printf "@a\n";
@b=(-1.7..5);
printf "@b\n";
@c=(-1.2..5.3);
printf "@c\n";
@d=(-1.2..5.5);
printf "@d\n";
@e=(-1.2..5.8);
printf "@d\n";
@f=(-5.5..3.8);
printf "@f\n";

#
怎么都一样,那怎么输出小数的?

此帖于 03-09-28 17:41 被 devel 编辑.
  devel 当前离线   回复时引用此帖
旧 03-09-28, 14:09 第 25 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

范围运算符 .. 只能适用整数
对小数的输出,可以用
printf "%.2f","4.1415926\n"
3.14
  KornLee 当前离线   回复时引用此帖
旧 03-09-28, 16:47 第 26 帖
Kevin 帅哥
 
Kevin 的头像
 
 
管理员  
  注册日期: Apr 2002
  帖子: 1,223
  精华: 0
 

范围运算符对于实数运算时

(1.5..5.8) = (1,2,3,4)
(5.8..1.3) = ()
  Kevin 当前离线   回复时引用此帖
旧 03-09-28, 17:53 第 27 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

谢谢你们俩,我懂了。
请问错在哪里?
16 @array=(1,2,3,4,5);
17 ($a,$b,$c,$d,$e)=@array;
18 printf "$a\n";
19 printf "$b\n";
20 printf "$c\n";
21 printf "$d\n";
22 printf "$e\n";
23 printf "next------------------\n";
24 printf "@array[0]\n";
25 @array[2]=11;
26 printf "@array[2]\n";
27 @array[1]++;
28 printf "@array[1]\n";
29 ++@array[1];
30 printf "@array[1]\n"
31 @array[1]=2;
32 --@array[1];
33 printf "@array[1]\n";
34 @array[1]--;
35 printf "@array[1]\n";
36 printf "******************\n";
37 @array[1]=2;
38 @array[1]+=5;
39 printf "@array[1]\n";
40 @array[1]=2;
41 @array[1]*=5;
42 printf "@array[1]\n";
43 @array[1]=2;
44 @array[1]/=5;
45 printf "@array[1]\n";

# perl array
Array found where operator expected at array line 31, at end of line
(Missing semicolon on previous line?)
syntax error at array line 31, near "@array"
Execution of array aborted due to compilation errors.
#
我看了很久都不明白错在哪里。要是又缺了什么的就脸红了。呵呵~
有:
# cat -n array|less
1 #!/usr/bin/perl5
  devel 当前离线   回复时引用此帖
旧 03-09-28, 18:02 第 28 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

好乱~~~.
没看见提示吗?!
引用:
...
syntax error at array line 31, near "@array"
Execution of array aborted due to compilation errors.
  KornLee 当前离线   回复时引用此帖
旧 03-09-28, 19:00 第 29 帖
devel
 
devel 的头像
 
 
已封禁  
  注册日期: Sep 2003
  我的住址: 自由的世界 !
  帖子: 1,472
  精华: 6
 

不懂:o
好象是说line31
我看了,没什么错啊。
举个例子。
#!/usr/bin/perl5
@a=(1,2,3);
--@a[1];
printf "@a[1]\n";
@a[1]--;
printf "@a[1]\n";
@array[2]*=5;
printf "@a[2]\n";

# perl t2
1
0
3
#
这里怎么不会错了。:o
最后的输出怎么是3?? 不明白。:o

此帖于 03-09-28 19:37 被 devel 编辑.
  devel 当前离线   回复时引用此帖
旧 03-09-28, 20:47 第 30 帖
Kevin 帅哥
 
Kevin 的头像
 
 
管理员  
  注册日期: Apr 2002
  帖子: 1,223
  精华: 0
 

引用:
最初由 devel 发表
#!/usr/bin/perl5
@a=(1,2,3);
--@a[1];
printf "@a[1]\n";
@a[1]--;
printf "@a[1]\n";
#####@array[2]*######=5;
printf "@a[2]\n";

# perl t2
1
0
3
#
这里怎么不会错了。:o
最后的输出怎么是3?? 不明白。:o [/b]
192# cat 4.pl
#!/usr/bin/perl5
@a=(1,2,3);
--@a[1];
printf "@a[1]\n";
@a[1]--;
printf "@a[1]\n";
@a[2]=5;
printf "@a[2]\n";

192#
  Kevin 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 12:20


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2012, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2011, LinuxSir.Org