【问题标题】:Multiple commands without one line in perlperl中没有一行的多个命令
【发布时间】:2018-05-22 22:54:36
【问题描述】:

我写了一些 code 从数组创建哈希。

我创建了一个衬垫$seens 来删除重复项,而不是构建哈希表,这将从我的键和值中删除重复项。

我意识到我不能在|| 之后的换行符中运行多个命令(就像循环一样),但只能在|| 之后的一行中添加它们

原文部分:

...
foreach my $k (sort keys %store) {
     ($key, $key2, $value) = split /-/, $k;
     chomp ($key, $key2, $value);
     $seen{$key}++ || print "1. $key\n";
     $seen{$key2}++ || print "2. -- $key2\n";
     $seen{$value}++ || print "3. ----$value\n";
}

我可以打印这样的行,但维护起来很乏味:

$seen{$value}++ || print "3. ----$value\n "something else";

我实际上是在创建一个 xml 文件,并将我的所有文本放在一行中看起来非常糟糕且难以调试:所以我真的在寻找一种方法来代替:

...
foreach my $k (sort keys %store) {
     ($key, $key2, $value) = split /-/, $k;
     chomp ($key, $key2, $value);
     $seen{$key}++ || {
                    print "1. $key\n";
                    print "that went well..";
                    ...
                  }

     $seen{$key2}++ || print "2. -- $key2\n";
     $seen{$value}++ || print "3. ----$value\n";
}

有没有办法从这样的一行做到这一点?

如需更清楚地了解此脚本,请参阅 this question @Mob 对我有很大帮助。

【问题讨论】:

  • 行不等于 Perl 中的语句。 ; 分隔语句。
  • @simbabque 抱歉,这不是我要输入的内容,现在将修正。
  • @Jacob:说实话,我根本听不懂你的第一句话。我只从您的代码示例中收集了您想要的内容。请问能改一下语法吗?
  • @Borodin 对不起,我现在试着让它更容易理解。
  • 如果您实际上是在制作 XML 文件,我建议您使用解析器。

标签: perl


【解决方案1】:
$seen{$key}++ or do {
    print "1. $key\n";
    print "that went well..";
    ...
};

【讨论】:

  • 嗯,这真是一个惊喜,如此简单:\谢谢磨坊。
  • 或者只是if ( not $seen{$key}++ ) { print print print }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
  • 2012-03-29
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多