如何在 Perl 中将单词插入字符串?

发布于 2024-08-30 04:20:03 字数 492 浏览 4 评论 0原文

#!C:\Perl\bin\perl.exe 
use strict; 
use warnings; 
use Data::Dumper;  

my $fh = \*DATA;  

while(my $line = <$fh>)
{

    $line =~ s/ ^/male /x ;
    print $line ;
}

__DATA__  
1 0104 Mike Lee 2:01:48

输出

male 1 0104 Mike Lee 2:01:48

然后我尝试在 racenumber(0104) 之后插入male,我用 style 替换了代码。

$line =~ s/ ^\d+\s+\d+\s+ /male /x ; # but failed

实际上我想要输出。谢谢。

1 0104 male Mike Lee 2:01:48
#!C:\Perl\bin\perl.exe 
use strict; 
use warnings; 
use Data::Dumper;  

my $fh = \*DATA;  

while(my $line = <$fh>)
{

    $line =~ s/ ^/male /x ;
    print $line ;
}

__DATA__  
1 0104 Mike Lee 2:01:48

output

male 1 0104 Mike Lee 2:01:48

Then I tried to insert male after the racenumber(0104), I replaced the code with style.

$line =~ s/ ^\d+\s+\d+\s+ /male /x ; # but failed

Acturally I want the output. thank you.

1 0104 male Mike Lee 2:01:48

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

秋千易 2024-09-06 04:20:03

将字符串的开头捕获到 $1 中:

use strict;  
use warnings;  
 
my $fh = \*DATA;   
 
while(my $line = <$fh>) 
{ 
 
    $line =~ s/ ^(\d+\s+\d+\s+) /${1}male /x ;
    print $line ; 
} 
 
__DATA__   
1 0104 Mike Lee 2:01:48

输出:

1 0104 male Mike Lee 2:01:48

$1perlreref

Capture the beginning of the string into $1:

use strict;  
use warnings;  
 
my $fh = \*DATA;   
 
while(my $line = <$fh>) 
{ 
 
    $line =~ s/ ^(\d+\s+\d+\s+) /${1}male /x ;
    print $line ; 
} 
 
__DATA__   
1 0104 Mike Lee 2:01:48

Outputs:

1 0104 male Mike Lee 2:01:48

$1 is a special variable described in perlreref.

惜醉颜 2024-09-06 04:20:03

安全的方法是

chomp $line;
@tmp = split / /, $line;

然后以任何你想要的方式连接

safe method is to

chomp $line;
@tmp = split / /, $line;

then concatenate in any way you want

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文