我完全不懂Perl。我需要使用一个外部模块HTTP::BrowserDetect。我正在测试一些代码,并尝试从os_string方法中获取操作系统的名称。因此,我只需初始化对象并创建一个变量来存储返回的值即可。
my $ua = HTTP::BrowserDetect->new($user_agent);
my $os_name = $ua->os_string();
print "$user_agent $os_name\n";
有些用户代理不是浏览器用户代理,因此它们不会从os_string中获取任何值。我遇到了一个错误Use of uninitialized value $os_name in concatenation (.) or string
当$os_name未初始化时,如何处理这种情况,因为方法os_string返回undef(这是我从阅读模块源代码中得出的结论)。我猜应该有一种方式在这些情况下提供默认字符串,例如"No OS"。
||
方法引入了一个 bug。在发布这篇文章之前发现了这个问题,但不知道 "defined-or" 运算符。每天都能从 Perl 中学到新东西。 - ThisSuitIsBlackNot