如何使用Perl删除部分URL?

Sub*_*der 0 url perl

如何使用Perl从字符串中删除子字符串?例如,$URL包含http://xyz.com/Main#abcd.aspx

我想检查并删除' Main#' $URL谁能帮助我吗?

首先,我需要检查字符串是否Main#存在.如果存在,则将其剥离; 否则就不需要做任何事了.所以只有if语句.

Ken*_*ric 6

.

use strict;
use warnings;
use URI::Split qw( uri_split uri_join ); 

my $str = "http://xyz.com/Main#abc.aspx"
my ($scheme, $auth, $path, $query, $frag)  = uri_split( $str );
Run Code Online (Sandbox Code Playgroud)

这将为您提供URI作为一系列令牌,但除此之外,您想要做的具体细节有点不清楚.

  1. 您是否尝试提取路径以便使用它?
  2. 您是否尝试在没有路径的情况下重构URI?
  3. 您是否尝试仅提取路径中的特定节点?
  4. 您是否尝试在路径中没有特定节点的情况下重构URI
  5. 您是否只想过滤掉文字字符串'Main',而不是其他任何东西?

首先,我需要检查字符串#Main是否存在,如果存在则将其删除,否则无需执行任何操作,因此只有if语句

if( $str  =~ /#Main/ ){
   $str =~ s/#Main//g;
}
Run Code Online (Sandbox Code Playgroud)

这将从url中的任何位置删除文字字符串'#Main'(如果存在).这也可以写成

$str =~ s/#Main//g;
Run Code Online (Sandbox Code Playgroud)

因为如果它不存在,将不会进行任何替换.

显着的并发症

如果您尝试从Web客户端检索URI,例如,它是一个请求字符串,您可能会发现该#.*部分(也称为文档片段)已经从URI中删除.根据我的经验,这是Web客户端的行为方式.

我很确定有一个RFC在某处指定这样做,但是懒惰 -