如何去除单词开头的白色 space?

How do I remove white space at the beginning of a word?

查看与之前关于“如何将第一个字母大写”的问题相关的常见问题解答,我发现了很多有趣的解决方案来解决我想尝试的问题,但我有一个更紧迫的问题要处理在到达那里之前。

我的问题是我无法去除每一行名称开头的白色 space。姓名包括名字和姓氏。姓氏是大写的。我尝试使用由 Brian D Foy 编辑的常见问题解答中找到的解决方案,但无论我尝试什么,我都会得到 Use of uninitialised value $_ in substitution (s///) at ...

我的代码是这样的:

open DATA, “<“, “name.txt”;
my @file = <DATA>;

for each my $name (@file) {
    chomp $name;
    my @arr;
    
    # find ‘Mr.’ and ‘Ms.’, then ignore them
    @arr = split(/M.\.\s/g, $name);
    
    # remove leading white space from first names
    @arr = s/^\s+//g;

    print @arr,”\n”;
}

这是练习的一部分。我的解决方案与作者自己的几乎没有相似之处。在这里,我实际上应该将每个名字的首字母大写。我无法通过当前问题来完成练习。尽管作为既定目标的解决方案,代码相当长,但在尝试找到更简洁的方法来实现相同结果之前,我想利用学习辅助工具中描述的方法。现在,我将非常感谢澄清为什么我收到错误消息以及为什么我不能删除白色 space。谢谢。

您可以删除拆分正则表达式中名称的空格。

因此您的代码将变为:

open DATA, "<", "name.txt";
my @file = <DATA>;

foreach my $name (@file) {
    chomp $name;

    # find ‘Mr.’ and ‘Ms.’, then ignore them
    my @arr = split(/M.\.\s+/g, $name);

    print @arr,"\n";
}