perl - 如何检查对象是否存在

标签 perl

我正在尝试提取 URL 的域部分,并且我想涵盖输入无效的情况。

 use strict;
 use warnings;
 use URI;
 use Data::Dumper;

 my $url = URI->new( "garbled" );
 # my $url = URI->new( "http://www.google.com/" ); # this works
 # print Dumper $url;
 print $url->host if defined($url->host) ;

给出无法通过包“URI::_generic”在找到对象方法“host”

如何检查URL是否被正确解析?

最佳答案

对于一般情况,您可以使用UNIVERSAL::can

if (ref($url) && $url->can("host")) { ... }

或异常处理

eval { print $url->host };
if ($@) { warn "\$url wasn't what I thought it was" }

但在大多数情况下,您希望深入了解错误并找到您的期望与程序行为之间的不匹配。

关于perl - 如何检查对象是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47424780/

相关文章:

ruby - Sed 或 Perl : One file with regex instructions, 每行一条指令,在另一个文件上执行

regex - Perl 替换 - 查找表问题

perl - 在 perl 中推荐一些好的 MVC 框架

perl - Mojolicious::Lite 与模板工具包

Perl : Set read timeout in client socket

perl - 我如何使用 Perl6::Form 的引用?

perl - 通过 Perl 的 DBI $sth->execute() 函数将字符串插入数据库时​​将其转换为数字

linux - 如何使程序在 SHELL 中的任何地方都可执行

perl - 守护进程关闭和清理

python - 使用 DBI 模块将 Perl 代码转换为带有 MySQLdb 的 Python