我是Perl的新手并尝试创建一个脚本,该脚本从用户那里获取输入,然后根据该输入和网址从网站获取XML数据,然后将其转发回用户。
但是我现在遇到了一些问题,根据用户的输入建立了一个可用的链接。
这是我的完整代码:
use strict;
use warnings;
use utf8;
my $row = 0;
use XML::LibXML;
print "\n\n\nOn what place do you need a weather report for? -> ";
my $ort = <>;
my $url1 = "http://www.yr.no/place/Sweden/Västra_Götaland/";
my $url2 = "/forecast_hour_by_hour.xml";
my $url = join('', $url1,$ort,$url2);
my $dom = XML::LibXML->load_xml(location => $url);
print "\n\nSee below the weather for ", $ort, ":\n\n";
foreach my $weatherdata ($dom->findnodes('//time')) {
if($row != 10){
my $temp = $weatherdata->findvalue('./temperature/@value');
my $value = $weatherdata->findvalue('./@from');
my $valuesub = substr $value, 11, 5;
print "At ", $valuesub, " the temperature will be: ", $temp, "C\n";
$row++;
}
}
print "\n\n";
我假设的这一点是:
my $ort = <>;
my $url1 = "http://www.yr.no/place/Sweden/Västra_Götaland/";
my $url2 = "/forecast_hour_by_hour.xml";
my $url = join('', $url1,$ort,$url2);
my $dom = XML::LibXML->load_xml(location => $url);
它进入换行符然后链接断开。
我认为问题在于$ort
因为当我尝试打印$ort
之后,我还会在收到换行符之后打印出来。
我希望我能清楚地解释清楚,或者你可以告诉我需要改进什么。
答案 0 :(得分:2)
该换行符来自您的终端。您可以使用chomp
功能删除它:
my $ort = <>;
chomp($ort);
通常会在一行中看到这个,这会产生相同的结果:
chomp( my $ort = <> );