Я сравниваю две строки, такие как (textid, citeid)
.Как объявить строку сравнения бесконечного цикла?
Если два Идентификаторы (textid, citeid)
равны соответствующий uniqueid
следует заменить в textid
в течение всего текста Citation Части.
MWE:
#!C:\Strawberry\perl\bin\perl
use strict;
use warnings;
use 5.010;
open(IN,"$ARGV[0]\.html")||die("Input LaTeX filename without .html extension\n");
local $/;
my $String_Match=<IN>;
my ($textid) = $String_Match =~ m/textid="(.*?)"/;
my ($citeid) = $String_Match =~ m/citeid="(.*?)"/;
my ($uniqueid) = $String_Match =~ m/ref uniqueid="(.*?)"/;
if ($textid eq $citeid)
{
if ($String_Match=~m/textid="(.*?)"/s)
{
$String_Match =~ s/textid="(.*?)"/textid="$uniqueid"/si;
}
}
print $String_Match;
Строка сравнения eq
функция не работает для бесконечного цикла, как (в то время или делать-то время)
выше MWE выполнить условию только один раз. Но мой требуемый выход textid
должен быть заменен uniqueid
по всему файлу.
Мой Входной файл:
Text Citation Part
<xref textid="Narain:1982">1</xref>
<xref textid="Nasir:2012">2</xref>
<xref textid="Yao:2011">3</xref>
<xref textid="Cogley:1968">4</xref>
Reference Citation Part
<ref uniqueid="j_zna-2014-0260_ref_001"><citeid="Narain:1982"></ref>
<ref uniqueid="j_zna-2014-0260_ref_002"><citeid="Nasir:2012"></ref>
<ref uniqueid="j_zna-2014-0260_ref_003"><citeid="Yao:2011"></ref>
<ref uniqueid="j_zna-2014-0260_ref_004"><citeid="Cogley:1968"></ref>
Мой Требуемый Выходной файл:> out.txt
Text Citation Part
<xref textid="j_zna-2014-0260_ref_001">1</xref>
<xref textid="j_zna-2014-0260_ref_002">2</xref>
<xref textid="j_zna-2014-0260_ref_003">3</xref>
<xref textid="j_zna-2014-0260_ref_004">4</xref>
Reference Citation Part
<ref uniqueid="j_zna-2014-0260_ref_001"><citeid="Narain:1982"></ref>
<ref uniqueid="j_zna-2014-0260_ref_002"><citeid="Nasir:2012"></ref>
<ref uniqueid="j_zna-2014-0260_ref_003"><citeid="Yao:2011"></ref>
<ref uniqueid="j_zna-2014-0260_ref_004"><citeid="Cogley:1968"></ref>
Пожалуйста, советы, как выполнить логику .....
Является ли разница пробелов во входных и выходных данных? – simbabque
@simbabque Я не могу понять. О чем ты говоришь? – Vetri
Я бы просмотрел файл по строкам, сохранил числа в хэше с текстом в качестве ключа, а затем сохранил там все уникальные идентификаторы, а затем построил ваш вывод из этого. Разумеется, вы также можете использовать slurp, как вы делаете, а затем захватить все текстовые объекты в массив и т. Д., Но я бы нашел линейную линию проще. – bytepusher