Perl while循环重复自己

use*_*252 3 perl loops while-loop

我是Perl的100%新手,但确实有一些PHP知识.我正在尝试创建一个快速脚本,它将获取@url变量并将其保存为.txt文件.我遇到的问题是它每次运行循环时都会再次保存url,这非常烦人.所以当循环运行时,它看起来像这样.

url1.com
url1.com url2.com
url1.com url2.com url3.com 
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像一个简单明了的:

url1.com
url2.com
url3.com
Run Code Online (Sandbox Code Playgroud)

这是我的代码.如果有人可以提供帮助,我会非常感激!

#!/usr/bin/perl
use strict;
use warnings;

my $file = "data.rdf.u8";
my @urls;

open(my $fh, "<", $file) or die "Unable to open $file\n";

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

    if ($line =~ m/<(?:ExternalPage about|link r:resource)="([^\"]+)"\/?>/) {
        push @urls, $1;
    }

    open (FH, ">>my_urls.txt") or die "$!";
    print FH "@urls ";
    close(FH);
}

close $fh; 
Run Code Online (Sandbox Code Playgroud)

Ant*_*tek 8

您的打印件位于while循环中.听起来你想要将你的打印移到循环之外.

或者,如果您想在每行中打印每个URL,请将"my @urls"的声明向下移动到循环中,然后每行重置一次