【问题标题】:How do I use an 'if' statement in Perl? [duplicate]如何在 Perl 中使用“if”语句? [复制]
【发布时间】:2016-06-16 04:21:10
【问题描述】:

考虑:

#!/usr/bin/perl
if ($ARGV[0]=="-v") {
    print "MY name: abc\n";
    print "MY student ID:111110\n";
}
if ($ARGV[0]=="-s" && $ARGV[1]==printing_usage_file) {
    open (INFILE, $ARGV[1]) or die "An input file is required as argument\n";
    $totalbytes=0;
    $data="";
    while(<INFILE>) {
        chomp();
        @data=split(/,/);
        $totalbytes += $data[1];
    }
    print "Total number of bytes printed: $totalbytes\n";
}

在这种情况下,我想要的是当我运行./perl.pl -v 时,它会打印出my nameid

当我运行./perl.pl -s printing_usage_file 时,它会打印totalbytes(printing_usage_file file is list like:aaa,240,ccc)

但是在这里,当我运行 /perl.pl -v./perl.pl -s printing_usage_file 时,它会打印 my name,idtotalbytes。我该如何解决?

【问题讨论】:

  • 如果我在第二个 if 语句中使用 elsif,/perl.pl -s printing_usage_file 将打印我的姓名和 ID,而不包含总字节数
  • 添加use warnings;use strict;,您将收到有关“printing_usage_file”字样的投诉。使用裸词不是一个好习惯。您还会被告知使用my 声明所有变量。请注意,标量 $data 在脚本的其余部分中未使用。有经验的 Perl 程序员使用严格和警告来确保他们没有犯任何愚蠢的错误;出于同样的原因,新手 Perl 程序员也应该使用它们。

标签: perl


【解决方案1】:

您的问题是,当您需要使用 eq 运算符时,您正在使用 == 运算符比较两个字符串。

$ perl -e 'print q{<}, "a" == "b", q{>}, "\n";'
<1>

如果您使用eq 运算符,它将返回一个空字符串,它是一个假值。

$ perl -e 'print q{<}, "a" eq "b", q{>}, "\n";'
<>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2018-06-29
    • 2014-07-19
    • 2015-02-06
    相关资源
    最近更新 更多