You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Perl字符串中添加含@符号的邮箱地址?

问题描述

我在CloudBees在线DevOps平台中使用以下Perl代码:

my $formattedUserEmail = $[UserEmail];
    
$additionalTestParameters .= "ECJOBLink,$jobLink;ECJOBId,$[jobId];EcJobCounter,$jobCounter,PFUser,$formattedUserEmail";

部署后代码被替换为:

my $formattedUserEmail = dave.adam@site.com; 
    
$additionalTestParameters .= "ECJOBLink,$jobLink;ECJOBId,1111;EcJobCounter,$jobCounter,PFUser,$formattedUserEmail";

运行时触发编译错误,具体报错:

Array found where operator expected at ... line 32, at end of line
syntax error at .... line 32, near "adam@site"
Global symbol "@site" requires explicit package name at C.... line 32.
Execution of ..... aborted due to compilation errors.

我判断是邮箱里的@在Perl中属于特殊字符导致的问题,请问怎么修改代码才能正确把邮箱变量加到$additionalTestParameters字符串里?

解决方案

问题根源没错:Perl中@是数组变量的标识,编译器会把@site当成数组名解析,直接触发语法错误。可以用以下两种方法修复:

1. 给邮箱地址加引号

把替换后的邮箱地址用单引号或双引号包裹,让Perl将其识别为字符串字面量:

my $formattedUserEmail = 'dave.adam@site.com'; 

如果是CloudBees平台自动替换$[UserEmail]变量,要修改模板代码,让平台生成带引号的结果,比如把模板改成:

my $formattedUserEmail = '$[UserEmail]';

这样部署后会自动生成带单引号的邮箱字符串,避免@被误解析。

2. 转义@符号

在邮箱的@前加反斜杠\转义,告诉Perl这是普通字符:

my $formattedUserEmail = dave.adam\@site.com; 

如果是平台自动替换变量,需要在模板里处理转义,或者配置平台替换时自动转义特殊字符。

优先推荐第一种加引号的方式,这是Perl字符串的常规写法,可读性和稳定性都更好。

内容的提问来源于stack exchange,提问作者POVR2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:17:33