我想翻译两个字符的所有字符实例.通常的做法是:
$text =~ s/a/aa/g;
Run Code Online (Sandbox Code Playgroud)
我只想要一个角色的单个实例加倍.所以aa会留下aa而不会变成aaaa.
我想我必须在s///声明中使用变量,但我在这里或网上找不到任何合适的模式.
我正在从一个数据文件构建一个数组,该数据文件用作参数列表到缓存的SQL语句.这适用于针对Oracle数据库运行的perl DBI.
例如:
@params = ("This", "that", "NULL", "finish");
Run Code Online (Sandbox Code Playgroud)
我需要将此更改为:
@params = ("This", "that", undef, "finish");
Run Code Online (Sandbox Code Playgroud)
我用google搜索了这个,用s ///建议用于字符串替换.我不知道如何为给定条件取消数组中的元素.
我正在基于此处找到的身份验证系统构建一个身份验证系统:
https://github.com/alexanderBendo/Experiments/blob/master/exp0001/mojolicious-auth-session.pl
我遇到的问题是,如果用户输入了错误的用户名或密码,服务器将返回闪现消息,就像他们试图在未登录的情况下访问页面一样。它应该显示无效凭据消息。如果我第二次输入错误凭据,我会收到无效凭据消息。
这是相关的代码:
sub main {
my $self = shift;
if ( $self->is_user_authenticated ) {
$self->redirect_to('/main/cp');
} else {
$self->flash( message => 'You must log in to view this page' );
$self->render('login');
}
}
sub login {
my $self = shift;
my $user = $self->param('name') || q{};
my $pass = $self->param('pass') || q{};
if ( $self->authenticate( $user, $pass ) ) {
$self->redirect_to('/main/cp');
} else {
$self->flash( message => 'Invalid credentials!' );
$self->render('login');
return;
}
}
Run Code Online (Sandbox Code Playgroud)
模板:
% layout 'default'; …Run Code Online (Sandbox Code Playgroud)