如何在 Perl 中使用 Wea​​ther::NOAA::Alert 解析 CAP id 而不是散列值

问题描述

感谢以下解决方案中接受的答案,我现在能够从 NOAA 警报中提取我需要的大部分值:perl Data::Dumper to extract key values

我也想解析“CAP id”,但是当我尝试时,我收到一个散列值而不是 URL。

例如,使用前面提到的线程,我想解析的是: http://alerts.weather.gov/cap/wwacapget.PHP?x=TX12516CBE9400.FloodWarning.12516CC068C0TX.MAFFLWMAF.f21e7ce7cf8e930ab73a110c4d912576

我得到的是:HASH(0x26384c0)

我想这只能通过修改 alert.pm 来实现: https://github.com/mikegrb/Weather-NOAA-Alert/blob/master/lib/Weather/NOAA/Alert.pm,如果我对这个问题有足够的了解,可能是因为 XML::Simple?

通常,我会使用 XPath 来解析 XML 之类的数据,但对于这种 ATOM 格式,我迷路了。

最终,我只是想将解析的变量添加sql 数据库中。随着 NOAA 希望从 CAP v1.1 过渡到 v1.2(我不知道什么时候),也许我应该考虑使用其他东西。

解决方法

在您的 previous code 中,您可以像这样获取 hashref df$date_time <- lubridate::mdy_hms(df$LSAF..Date.acted.On.) df$date <- as.Date(df$date_time) head(df) #. LSAF..Date.acted.On. date_time date #1 Nov 13,2020,4:24:07 PM GMT-05:00 2020-11-13 21:24:07 2020-11-13 #2 Mar 5,10:00:07 AM GMT-05:00 2020-03-05 15:00:07 2020-03-05 #3 Aug 13,2019,10:58:13 AM GMT-04:00 2019-08-13 14:58:13 2019-08-13 #4 Nov 13,4:21:06 PM GMT-05:00 2020-11-13 21:21:06 2020-11-13 #5 Sep 9,10:25:03 AM GMT-04:00 2019-09-09 14:25:03 2019-09-09 #6 Sep 19,2:45:46 PM GMT-04:00 2019-09-19 18:45:46 2019-09-19 的单个键:

$events->{'TXC301'}

现在 my @keys = keys %{$events->{'TXC301'}} my $alert_url = $keys[0] 应该保存您提到的网址。

这是否回答了您的问题?