Perl如何推断字符串

时间:2017-06-26 18:19:14

标签: perl

假设我在文本文件中有以下字符串:

hello my name is /yellow/duck

我想知道是否有一个函数可以在该字符串上运行并返回“ yellow ”。

我知道Perl有一个通配符变量.,但我不确定它是否适用于此,因为我的知识有限,你只能将单词归因于.

2 个答案:

答案 0 :(得分:2)

  

我知道perl(sic)有一个通配符变量.

Perl没有这样的“通配符变量”。您可能在正则表达式模式中指的是.的含义:

  

.匹配除换行符之外的任何单个字符(除非使用/s

记录在perldoc perlre

Prima facie 你的问题毫无意义。但是,在这些行之间阅读,你似乎在问是否有办法匹配两个/个字符之间的任何字符序列。

my $x = "hello my name is /yellow/duck";
if ($x =~ m{/ ( [^/]+ ) /}x) {
    print "$1\n";
}

您可以通过阅读计算机上的perldoc perlre来了解正则表达式匹配。另请参阅perldoc perlrerefperldoc perlretut

如果没有学习,你就无法学习编程。与其他语言相比,Perl的主要优势之一是分发中包含大量有用的文档。您应该至少阅读一次所有内容,并在每次机会时再回头查看。请参阅perldoc perltoc

拥有decent book也没有伤害。

答案 1 :(得分:0)

  

我想知道是否有一个函数可以在该字符串上运行并返回"黄色"。

my $s = 'hello my name is /yellow/duck';

print func($s), "\n";

sub func { 'yellow' }

是的,这个"回答"是滑稽的,但它有一些严重和重要的意义

  • 在指定,实施和记录软件时,您必须绝对精确。它与普通人类语言完全不同

  • 仅仅因为一个程序产生了'#34;正确的结果"它并不意味着它是正确的