我对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获取任何值.我收到错误在连接(.)或字符串中使用未初始化的值$os_name
当$os_name未初始化时,如何处理这种情况,因为方法os_string返回undef(这是我从阅读模块的源代码发生的).我想应该有办法给出一个默认的字符串,例如在这些情况下没有操作系统.
解决方法
my $os_name = $ua->os_string() || 'No OS';
如果$ua-> os_string()是伪造的(即:undef,zero或空字符串),则||的第二部分表达式将被评估(并将是表达式的值).