string - Perl 无法截断字符串

标签 string perl ibm-mq truncate

我正在尝试从命令“dspmq”的输出中提取 AAA 和 BBB。 $dspmq <- 此命令的输出为 -->

QMNAME(AAA)                                           STATUS(Running)
QMNAME(BBB)                                           STATUS(Running)

但它不适用于以下代码。

perl -e 'use Data::Dumper qw(Dumper);my @qmgrlist = `dspmq`;$size = @qmgrlist;foreach my $i (@qmgrlist){my @temp1 = split /QMNAME\(/, $i;print @temp1;}'
AAA)                                           STATUS(Running)

BBB)                                           STATUS(Running)

我能够截断 "QMNAME(" 但无法截断 AAABBB 右侧的那些。基本上我想获取 "QMNAME(" 和立即 ")" 之间的字符串。请协助。

最佳答案

我认为正则表达式方法比这里的 split() 更好,但是您可以通过在括号上拆分并获取返回列表中的第二项来使用 split() .

for (@qmgrlist) {
  say +(split /[()]/)[0];
}

以及关于使用命令行选项来运行此代码的简短说明。如果您 a) 将 qspmq 的输出通过管道传输到代码中,b) 使用 -n 一次处理一条记录,则可以使其变得更简单。

$ perl -nE 'say +(split /[()]/)[1]' `dspmq`

还有-M来加载模块(例如-MData::Dumper),但您似乎不再使用Data::Dumper。

关于string - Perl 无法截断字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59212822/

相关文章:

ruby - 全部大写到正常大小写

python - 在包含字符串列表的 Series 上使用 Pandas 字符串方法 'contains'

c++ - 检查字符串数组中是否存在字符串的最快方法是什么?

c - MQOPEN 给出错误 2085,这是我以前没有的

java - 将字符串写入 Planner 中的文本文件

regex - 用 perl 查找和替换双换行符?

Perl 和进程管理

perl - 从 CPAN 使用稍微修改模块的最佳实践?

ibm-mq - 如何获取给定动态队列 (WebSphere MQ) 的模型队列名称?

websphere - 主题消息驱动 Bean 在 Websphere 8.5.5 集群环境中的行为如何