【问题标题】:Declaring a variable from grep in array Perl从数组 Perl 中的 grep 声明变量
【发布时间】:2014-05-07 11:59:58
【问题描述】:

我正在制作一个从推文中提取网址的脚本。在运行脚本并将其放入一个数组时,它输出了大约 30 个 url,其中只有一个是正确的。所以我使用了一个 grep 和我想要从数组中获取的 url 的第一部分,并得到了“找到它”的输出。

my $tco = "http://t.co";

if (grep /$tco/, @links) {
    print "found it\n";
}

我想知道我是否可以删除以http://t.co 开头的那一行并将该行变成一个变量 ex:

$extracted_url = 'what I found in the array'

我该怎么做呢?提前谢谢你!,布雷特

【问题讨论】:

  • 请注意,由于您正在寻找一个常量字符串,因此您希望转义正则表达式中的特殊字符:grep /\Q$tco/。否则,. 将匹配任何字符,并且您的正则表达式将匹配例如http://tacobell.com。您还在每个链接的任何地方寻找http://t.co;如果您只想查找以该模式开头的链接,则需要 grep /^\Q$tco/

标签: arrays perl grep


【解决方案1】:

试试这个:

my @found = (grep /\Q$tco/, @links);
for my $url (@found) {
    print "found $url\n";
}

【讨论】:

  • 谢谢,它将它们(有两个)打印到控制台我如何将控制台上的这些 url 转换为变量我会做类似 $newvariable = my @found = (grep /$tco /,@链接); if (@found) { for my $url (@found) { print "found $url\n"; } }
  • 打印只是为了证明正在填充变量。具体来说,它们是$found[0]$found[1]$newvariable 没有意义,因为它是一个变量并且有两个 url。但如果您愿意,可以在 tangent 的代码中将 $url 替换为 $newvariable
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 2011-07-18
  • 1970-01-01
  • 2012-05-28
  • 2020-11-22
  • 2013-07-11
相关资源
最近更新 更多