perl在字符前删除子字符串

Pin*_*ndo 0 string perl substring

我有以下字符串: get_url.pl?critic_name=A_O_Scott.

我有以下正则表达式返回之前的任何东西,=但我似乎无法在它之前删除它?

$string=~ s/\=.*$//;
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

ike*_*ami 5

使用现有的解析器而不是编写自己的解析器.

use URI             qw( );
use URI::QueryParam qw( );

my $uri = URI->new('get_url.pl?critic_name=A_O_Scott', 'http');
Run Code Online (Sandbox Code Playgroud)

然后,如果你想要第一个参数的名称,

my ($first_param_name) = $uri->query_param();
Run Code Online (Sandbox Code Playgroud)

也就是说,大多数情况下,你需要参数的哈希值.

my %params = $uri->query_form();
Run Code Online (Sandbox Code Playgroud)

你说你想删除 get_url.pl,但其他答案假设你想要保留的部分.如果您想在查询之前使用该部件,则可以使用

use URI qw( );

my $uri = URI->new('get_url.pl?critic_name=A_O_Scott', 'http');
$uri->query(undef);

print("$uri\n");
Run Code Online (Sandbox Code Playgroud)