**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答案。
这个问题是由一个打字错误或一个无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
3天前关闭。
Improve this question
我不太擅长Perl脚本编写,很难理解第一个split在下面的Perl脚本片段中是如何使用的。
在这一行:
@splitEachJudge = split / \(/ig,$orig_content;
它似乎不遵循syntax。
任何善良的灵魂都能解释这里的分裂是如何运作的吗?
$glb_doc2Cont = "<AJudge>Andrew and Alvin</AJudge>";
$line = "<AJudge>Andrew and Alvin</AJudge>";
if ($line =~ /<AJudge>(.*?)<\/AJudge>/ig) {
$orig_content = $1;
$content = $1;
@splitEachJudge = split / \(/ig,$orig_content;
print("Last index of array= $#splitEachJudge\n");
print("EachJudge1: $splitEachJudge[0]\n");
print("EachJudge2: $splitEachJudge[1]\n");
do {
local @ARGV = ($splitEachJudge[1]);
eval { require 'Cleanup.pl'};
$judge2 = cleanLeadingTrailingSpace();
print("Judge2: $judge2\n");
};
if ($#splitEachJudge eq "1") {
if ($splitEachJudge[0] =~ / and /i) {
@eachJudgeAnd = split / and /ig,$splitEachJudge[0];
do {
local @ARGV = ($eachJudgeAnd[0]);
eval { require 'Cleanup.pl'};
$eachJudgeAnd[0] = cleanLeadingTrailingSpace();
local @ARGV = ($eachJudgeAnd[1]);
$eachJudgeAnd[1] = cleanLeadingTrailingSpace();
};
if ($eachJudgeAnd[0] =~ /, /i) {
$StoreCommaJudge = "";
@eachJudgeComma = split /, /ig,$eachJudgeAnd[0];
for ($count=0;$count<=$#eachJudgeComma;++$count) {
$StoreCommaJudge .= "<Judge>$eachJudgeComma[$count]<\/Judge>, ";
}
$glb_doc2Cont=~s/<AJudge>\Q$content\E<\/AJudge>/<JCoram>$StoreCommaJudge and <Judge>$eachJudgeAnd[1]<\/Judge> \($judge2<\/JCoram>/ig;
}else{
$glb_doc2Cont=~s/<AJudge>\Q$content\E<\/AJudge>/<JCoram><Judge>$eachJudgeAnd[0]<\/Judge> and <Judge>$eachJudgeAnd[1]<\/Judge> \($judge2<\/JCoram>/ig;
}
}
else{
$glb_doc2Cont=~s/<AJudge>\Q$content\E<\/AJudge>/<JCoram><Judge>$splitEachJudge[0]<\/Judge> \($judge2<\/JCoram>/ig;
}
}
elsif ($#splitEachJudge eq "0"){
@splitEachJudge2 = split /:/ig,$orig_content;
$glb_doc2Cont=~s/<AJudge>\Q$content\E<\/AJudge>/<JCoram><Judge>$splitEachJudge2[0]<\/Judge>:<\/JCoram>/ig;
}
}
1条答案
按热度按时间k10s72fa1#
您已
g
没有意义,但它被忽略了。匹配运算符(
/ \(/ig
)不进行计算,而是作为模式传递给split
。qr/ \(/i
返回一个编译过的正则表达式模式。该模式匹配一个空格后跟一个左括号。(i
使匹配不区分大小写,这在这里是无用的。)因此,
split
在$orig_content
中搜索空格后接左括号的字符串。它返回由该模式分隔的字符串。例如,
返回三个字符串:一米七纳一x一米八纳一x一米九纳一x。