我编写了一个perl代码段,从控制台输入的域名前面删除http://
和www
#!/usr/bin/perl
use strict;
print "Enter the domain name to be queried:\n";
my $input_domain = <>;
chomp ($input_domain);
my $inter_domain = $input_domain =~ s/http:\/\///r;
my $domain = $inter_domain =~ s/www.//r;
print $domain."\n";
输入http://domain-name.tld
或http://www.domain-name.tld
或甚至* www.domain-name.tld
后,此代码会返回domain-name.tld
。
我的问题是,使用将搜索和替换线组合成一个的Perl单线程可以实现同样的目标吗?
答案 0 :(得分:3)
如果您同时选择http://
和www.
,但同时查找它们,则会删除其中一个或两个。原始代码中唯一的差异是它会将www.http://domain-name.tld
更改为http://domain-name.tld
,我认为这不是一个缺点
要求修改用户输入的on-liner似乎很奇怪,所以我写了这个样本来处理来自DATA
文件句柄的四个不同的字符串。另请注意,使用不同的分隔符进行替换以避免必须逃避斜杠更为整洁
use strict;
use warnings;
while ( <DATA> ) {
s|^(?:http://)?(?:www\.)?||;
print;
}
__END__
http://www.domain-name.tld
http://domain-name.tld
www.domain-name.tld
domain-name.tld
domain-name.tld
domain-name.tld
domain-name.tld
domain-name.tld
答案 1 :(得分:0)
结合正则表达式:(http:\/\/)|(www\.)
s/(http:\/\/)|(www\.)//r;
这将删除http://和/或www。