此代码确实有效。但我的问题是:如果我取消注释两条注释行并注释掉接下来的三行,我会得到一个Can't modify non-lvalue subroutine
,我想知道为什么?如果我可以使用注释行,我会保存一个变量并骑... ...
接下来的问题我如何使这更加面向对象?
open FILE, "FBIDs" or die $!;
while (<FILE>) {
@csv = split /,/;
}
for (my $i=0;$i<$#csv;$i++) {
my $browser = LWP::UserAgent->new( );
my $url = "https://graph.facebook.com/$csv[$i]?fields=id,name\n";
my $response = $browser->get($url);
# $response->content=~s/[{}\"]//g;
# my @json = split (/[,:]/,$response->content);
my $resp=$response->content;
$resp=~s/[{}\"]//g;
my @json = split (/[,:]/,$resp);
print $json[1],", ",$json[3],"\n";
$browser->delete( );
}
close FILE;
答案 0 :(得分:5)
Perl意识到你正在尝试做一些无用的事情 - 修改一个没有存储在任何地方的值 - 所以它会抛出一个错误。请记住,$response->content
是方法调用(返回值的东西),而不是变量(存储又称左值)。
答案 1 :(得分:3)
$response->content
或$response->content()
是方法调用,您无法进行替换或更改。
另一方面,可以用这种方式处理一些perl函数,它们被称为lvalue subroutines。