设为首页 收藏本站
查看: 896|回复: 0

[经验分享] Perl 学习手札之八: Operators

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-27 09:10:44 | 显示全部楼层 |阅读模式
  数值的比较运算符:+, -, *, /, ++, --;
  arithemetic.pl



#!/usr/bin/perl
use strict;
use warnings;
main(@ARGV);
sub main
{
    my $n=42 + 12;# repeat with - * /
    message("The number is: " . $n);   
    my $n =42;
    #$n++;
    #$n--;
    #++$n;
    message("The number is: " . $n++);
    message("The number is: " . ++$n);
    message("The number is: " . --$n);
}
sub message
{
    my $m = shift or return;
    print("$m\n");
}
sub error
{
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
}
  数值的运算符,还有++,--,这些都是和C里面完全相同。
  还有就是关于比较运算符:
  comparition.pl



#!/usr/bin/perl

use strict;
use warnings;
main(@ARGV);
sub main
{
#    if(5<=5){
#    if(6>5){
#    if(6>==5){
#    if("five" eq "five"){
    if("six" gt "five"){
        message("this is true");
    }else{
        message("this is NOT true");
    }
}
sub message
{
    my $m = shift or return;
    print("$m\n");
}
sub error
{
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
}
  以上是关于字符,数字的比较运算符,这个完全可以参照perldoc perlop来看更详细的解释。
  logical.pl



#!/usr/bin/perl
#
use strict;
use warnings;
main(@ARGV);
sub main
{
    my $x = (5!=5);
    message("x is '$x'");
    if((5==6||(6==5))){
#    if((5==6)&&(6==5)){
#    if((5==6) and (6==5)){
#    if((5==6) or (6==5)){        
                message("this is true");
    }else{
        message("this is not true");
    }
}
sub message
{
    my $m = shift or return;
    print("$m\n");
}
sub error
{
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
}
  注意此时的 || 等价与or; &&等价与 and。
  filetest.pl



#!/usr/bin/perl
use strict;
use warnings;
main(@ARGV);
sub main
{
    my @dirlist = <*>;
    foreach my $fn (@dirlist){
        message($fn);
        if( -f $fn){
            my $size = -s $fn;
            message("$fn is a plan file($size bytes)");
        }elsif( -d $fn){
            message("$fn is a directory");
        }else{
            message("$fn is something else");
        }
    }
}
sub message
{
    my $m = shift or return;
    print("$m\n");
}
sub error
{
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
}
  文件测试,可以查询相应的章节,或者在eclips的环境下,选中-f,然后点击右键,选中perldoc。
  range.pl



#!/usr/bin/perl
#
use strict;
use warnings;
main(@ARGV);
sub main
{
#    print foreach (1..9);
#    print foreach ('a'..'z','A'..'Z');
#    print foreach ('00'..'31');
    print join(',', ('00'..'31'));   
}
sub message
{
    my $m = shift or return;
    print("$m\n");
}
sub error
{
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
}
  我们会发现,range操作符还是很有用处的^^.
  concatenation.pl



#!/usr/bin/perl

use strict;
use warnings;
main(@ARGV);
sub main
{
    my $s1="string 1";
    my $s2 = "string 2";
    message($s1.' '.$s2);
}
sub message
{
    my $m = shift or return;
    print("$m\n");
}
sub error
{
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
}
  连接运算符 . 也是经常会见到的运算符。
  quoteop.pl



1 #!/usr/bin/perl
2
3
4 #
5 use strict;
6 use warnings;
7
8 main(@ARGV);
9
10 sub main
11 {
12     message("This is the \"template.pl\" exercise file from Perl 5 Essential Training.");
13     message(q[This is the "template.pl" exercise file from Perl 5 Essential Training.]);
14     message(q/This is the \"template.pl\" exercise file from Perl 5 Essential Training./);
15     message(q{This is the \"template.pl\" exercise file from Perl 5 Essential Training.});
16     my $x=42;
17     message(q{This is the "template.pl" ($x)exercise file from Perl 5 Essential Training.});
18     message(qq{This is the "template.pl" ($x)exercise file from Perl 5 Essential Training.});
19
20 }
21
22 sub message
23 {
24     my $m = shift or return;
25     print("$m\n");
26 }
27
28 sub error
29 {
30     my $e = shift || 'unkown error';
31     print("$0: $e\n");
32     exit 0;
33 }
  这个可以参考qq和q的差别,也就是双引号和单引号的差别。
  
  precedence.pl



1 #!/usr/bin/perl
2 #
3 use strict;
4 use warnings;
5
6 main(@ARGV);
7
8 sub main
9 {
10     my $n = 3+7*5;
11     message($n);
12 }
13
14 sub message
15 {
16     my $m = shift or return;
17     print("$m\n");
18 }
19
20 sub error
21 {
22     my $e = shift || 'unkown error';
23     print("$0: $e\n");
24     exit 0;
25 }
  
可以参照programming perl里面的运算符的优先级表。
  或者本目录下的附件:
  Operator Precedence.txt
  Operator Precedence and Associativity in Perl
=============================================
left        terms and list operators (leftward)
left        ->
nonassoc    ++ --
right       **
right       ! ~ \ and unary + and -
left        =~ !~
left        * / % x
left        + - .
left        << >>
nonassoc    named unary operators
nonassoc    < > <= >= lt gt le ge
nonassoc    == != <=> eq ne cmp ~~
left        &
left        | ^
left        &&
left        || //
nonassoc    .. ...
right       ?:
right       = += -= *= etc.
left        , =>
nonassoc    list operators (rightward)
right       not
left        and
left        or xor


  


  

  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-156814-1-1.html 上篇帖子: perl的引用 下篇帖子: linux eclipse epic perl padwalker
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表