Perl 检查字符串中的点

Perl 检查字符串中的点,perl,Perl,我很难检查csv文件中的特定列是否包含点 其背后的想法是,我必须合并两个栏目,即人名和姓氏。但在某些情况下,列中没有名字或姓氏 为什么我需要知道它们是否是点?因为名字都是全名的缩写版本。perl的优势之一是它的正则表达式引擎。使用正则表达式检查点的存在是很容易的,尽管有点过分了。例如: #! /usr/bin/perl use strict; use 5.0100; my $dotstring = "foo.bar"; my $nondotstring = "foodotbar"; fore

我很难检查csv文件中的特定列是否包含点

其背后的想法是,我必须合并两个栏目,即人名和姓氏。但在某些情况下,列中没有名字或姓氏


为什么我需要知道它们是否是点?因为名字都是全名的缩写版本。

perl的优势之一是它的正则表达式引擎。使用正则表达式检查点的存在是很容易的,尽管有点过分了。例如:

#! /usr/bin/perl
use strict;
use 5.0100;

my $dotstring = "foo.bar";
my $nondotstring = "foodotbar";

foreach ( $dotstring, $nondotstring ) {
  if ( $_ =~ /\./ ) {
    say "There's a dot in $_";
  }
  else {
    say "There's no dot in $_";
  }
}
这只是一个通用示例,您需要自己将其放入CSV解析中。

用于检查字符串中的子字符串。如果未找到匹配项,它将返回从0或-1开始的第一个匹配项的位置:

print index '.abc', '.';    # 0
print index 'abc.def', '.'; # 3
print index 'abc', '.';     # -1

if (index ($string, '.') >= 0) {
    # Do something
}

使用Text::CSV::Slurp读取文件,然后遍历结果行,查看name列是否包含点

my $data = Text::CSV::Slurp->load( file => ... )
for my $record (@$data) {
    if ($record->{Naam} =~ /\./) {
        ### Handle case here...
        ...
    }
}

你能不能提供一个完整的源代码示例来说明你尝试过什么?我什么都没试过,我不是一个perl方面的天才,我在这方面的谷歌搜索几乎没有。