Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何在两个条件之间连接线_Perl - Fatal编程技术网

Perl 如何在两个条件之间连接线

Perl 如何在两个条件之间连接线,perl,Perl,我列出了一个自定义清理phonebook.vcf文件的程序 我不知道如何将从/^NOTE.+://开始到/X-ACCOUNT.*://结束之间的所有内容放入单个字符串变量中。请考虑是否存在我希望保留的未来联系人格式: ADR;WORK;X-SYNCMLREF507891:;;NUENSCfff STRASSE 3-5;RIESCHWEILER;;66509;Germania ORG:aaaa & CO. KG NOTE;ENCODING=QUOTED-PRINTABLE:Hall 3

我列出了一个自定义清理phonebook.vcf文件的程序

我不知道如何将从
/^NOTE.+://
开始到
/X-ACCOUNT.*://
结束之间的所有内容放入单个字符串变量中。请考虑是否存在我希望保留的未来联系人格式:

ADR;WORK;X-SYNCMLREF507891:;;NUENSCfff STRASSE 3-5;RIESCHWEILER;;66509;Germania

ORG:aaaa & CO. KG

NOTE;ENCODING=QUOTED-PRINTABLE:Hall 30 F35=0A*ddddd@jggggine.com                   =0A014 =
 EURO                          =0A*kkkk@ggggne.com   =0A=
Bjjj@rrrLINE.COM 

X-ACCOUNT:Local Phone Account;Phone
可能使用任何foreach循环。但我不能只连接我需要的,然后停在正确的位置:

foreach $in (<IN>){
if($in =~ /^NOTE.*:|=$/){
    unless($in =~ /^[A-Z]+:/){
        $in =~ s/(.+=$)\n//;
        $inn .= $1;
    }
}

$a = $a;
foreach$in(){
如果($in=~/^NOTE.*:|=$/){
除非($in=~/^[A-Z]+:/){
$in=~s/(.+=$)\n/;
$inn=$1;
}
}
$a=$a;
}

有什么建议吗?

或多或少:

$inn .= $in if (($in =~ /^NOTE/ .. $in =~ /^X-ACCOUNT/) && $in !~ /^X-ACCOUNT/);
使用implicit
$\uu
将使其更短,也许:

while(<IN>) {
   $inn .= $_ if (/^NOTE/ .. /^X-ACCOUNT/ and !/^X-ACCOUNT/);
while(){
$inn.=$\uIf(/^NOTE/./^X-ACCOUNT/和!/^X-ACCOUNT/);

请参阅,或者也可以解释为什么
的优先级低于
&&
少一行,可能更容易理解:添加一个标志,指示“当前在变量中累积行”

$contracting=0;
每台美元(){
如果($in=~/^NOTE/){
美元=1;
}
如果($in=~/^X-账户:/){
美元=0;
#可能:添加一些使用$inn执行某些操作的代码
}
如果(累计){
$inn.=$in;
}
}
也许可以让这更容易些?
$accumulating = 0;

foreach $in (<IN>){
  if ($in =~ /^NOTE/) {
    $accumulating = 1;
  }
  if ($in =~ /^X-ACCOUNT:/) {
    $accumulating = 0;
    # possibly : add some code which does something with $inn
  }

  if ($accumulating) {
    $inn .= $in;
  }
}