gpt4 book ai didi

mysql - 从 Perl 格式获取数据并更新 sql 表

转载 作者:行者123 更新时间:2023-11-29 06:29:10 25 4
gpt4 key购买 nike

我对 Perl 比较陌生,正在尝试自学。但是我已经阅读了此页面和其他页面上的所有相关主题,但似乎没有一个适合我。

下面是我的代码 - 尝试从网页中获取大量 Perl 格式的数据并将其导出以更新 SQL 表中的值。

目前我什至无法将 url 的结果进行数据转储。

任何帮助都会很棒。

#!/usr/bin/perl
#
use LWP::Simple;
use warnings;
use strict;
use JSON qw( decode_json from_json );
use LWP::Simple;
use Data::Dumper;
use utf8;

my $url = "http://.sensitivedata.txt";

my @json= from_json(get ( $url ));
die "Couldn't get $url" if not defined @json;

##my $decoded_json = decode_json( @json);

print Dumper @json;

exit 0;

这是它给我的错误信息: defined(@array) 在 alarms.pl 第 14 行被弃用。 (也许你应该省略 defined()?) 格式错误的 JSON 字符串,既不是数组、对象、数字、字符串或原子,位于/opt/csw/share/perl/csw/JSON.pm 第 168 行的字符偏移量 0(在“(字符串结尾)”之前)

最佳答案

错误消息非常清楚地说明了 a) 问题是什么以及 b) 如何摆脱它。

defined(@array) is deprecated at alarms.pl line 14. (Maybe you should just omit the defined()?)

@json 上调用 defined() 是没有意义的。您实际上只是在检查数组中是否有任何数据,因此请将 if not defined @json 替换为 if not @json

这将消除错误消息。但是您仍然会遇到问题,因为您的程序现在几乎肯定会死在同一行并显示错误消息“Couldn't get http://.sensitivedata.txt”。这可能不是准确的错误消息。

问题是这个错误可能是由两个问题引起的。要么拿不到数据,要么解析不了数据。您的错误消息仅提及其中一种可能性。最好将错误检查分成两部分。

# Step 1: Get the data
my $raw_json = get($url);
die "Can't get data from $url" unless $raw_json;

# Step 2: Parse the data
my @json = from_json($raw_json);
if (!@json) {
warn $raw_json;
die "Can't parse data from $url";
}

使用更像这样的代码,您将能够看到问题所在。

这里还有一个小问题,所以要抢先解决你的下一个问题......

from_json 总是返回一个标量。它将是哈希引用或数组引用(取决于您获得的 JSON)。看起来你在期待一个数组。您需要将引用存储在标量中并取消引用它。

my $json_array_ref = from_json($raw_json);
if (!@$json_array_ref) {
warn $raw_json;
die "Can't parse data from $url";
}
my @json = @$json_array_ref;

关于mysql - 从 Perl 格式获取数据并更新 sql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28966641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com