小编Dre*_*ens的帖子

如何使用Test :: Class :: Load运行单独的测试?

在积累了足够的测试后,运行它们都需要一些实时的时间,我查看了Test::Class::Loaddoc以找到运行单个测试类的提示.它提供了一种方法来做到这一点,但我必须遗漏一些东西,因为我无法使它工作.这就是我所拥有的:

我的测试目录:

drewfus:~/sandbox$ ls t/
lib/  perlcriticrc  PerlCritic.t  Unit.t
Run Code Online (Sandbox Code Playgroud)

t/Unit.t 包括以下内容:

use strict;
use warnings;

use Test::Class;
use Test::More 'no_plan';
use Test::Class::Load 't/lib';
Run Code Online (Sandbox Code Playgroud)

根据Test::Class::Loaddoc中的建议,我有一个基类用于我继承的每个测试类,SG::TestBase它存在于t/lib/SG/TestBase.pm:

package SG::TestBase;
use strict;
use warnings;
use base 'Test::Class';

INIT { Test::Class->runtests }

1;
Run Code Online (Sandbox Code Playgroud)

最后,这是一个示例测试类,SG::UtilsTest位于t/lib/SG/UtilsTest.pm:

package SG::UtilsTest;
use strict;
use warnings;
use base 'SG::TestBase';

BEGIN { use_ok('SG::Utils') };
<etc>
Run Code Online (Sandbox Code Playgroud)

如果我想用Build test或运行所有测试,一切仍然很好prove,但尝试运行单个测试不起作用:

drewfus:~/sandbox$  prove -lv SG::UtilsTest
Cannot determine source …
Run Code Online (Sandbox Code Playgroud)

perl unit-testing

8
推荐指数
1
解决办法
695
查看次数

如何在Pod的L <>中使用URL链接文本?

L<name>格式代码,您可以设置,如果你链接到其他POD,作为链接显示文本L<Display Text|link_dest>,但这是不允许的L<scheme:...>链接,如

L<http://perldoc.perl.org/strict.html>
Run Code Online (Sandbox Code Playgroud)

如何为此类链接指定显示文本?或者,如何手动编写这样的链接,而角括号不是由HTML授权的pod2html

perl perl-pod

7
推荐指数
2
解决办法
2151
查看次数

在Perl中进行多线程处理时应该注意哪些模块?

在Perl中进行多线程处理时应该注意哪些模块?

我想做一些相当低的性能; 我想线程是同时运行多个工作者,每个人都在不同的时间内睡觉.

perl multithreading

7
推荐指数
4
解决办法
1311
查看次数

应该执行哪些字符替换以使base 64编码URL安全?

在查看URL安全base 64编码时,我发现它是一个非常非标准的东西.尽管PHP拥有大量内置函数,但没有一个用于URL安全base 64编码.在手册页上base64_encode(),大多数评论建议使用该功能,包括strtr():

function base64_url_encode($input)
{
     return strtr(base64_encode($input), '+/=', '-_,');
}
Run Code Online (Sandbox Code Playgroud)

我在这个领域唯一可以找到的Perl模块是MIME :: Base64 :: URLSafe(source),它在内部执行以下替换:

sub encode ($) {
    my $data = encode_base64($_[0], '');
    $data =~ tr|+/=|\-_|d;
    return $data;
}
Run Code Online (Sandbox Code Playgroud)

与上面的PHP函数不同,这个Perl版本完全删除'='(等于)字符,而不是像PHP那样用','(逗号)替换它.Equals是一个填充字符,因此Perl模块在解码时根据需要替换它们,但这种差异使得两个实现不兼容.

最后,Python函数urlsafe_b64encode(s)保持'='填充,提示有人提出此函数来删除在Google搜索结果中显示为'python base64 url​​ safe'的显式填充:

from base64 import urlsafe_b64encode, urlsafe_b64decode

def uri_b64encode(s):
    return urlsafe_b64encode(s).strip('=')

def uri_b64decode(s):
    return urlsafe_b64decode(s + '=' * (4 - len(s) % 4))
Run Code Online (Sandbox Code Playgroud)

这里的愿望是有一个字符串可以包含在URL中而无需进一步编码,因此字符'+','/'和'='的开头或翻译.既然没有明确的标准,那么正确的方法是什么?

php url perl base64 encoding

6
推荐指数
2
解决办法
2617
查看次数

GNU屏幕刷新问题

我最近开始使用GNU Screen,但遇到了一个非常烦人的问题.

在任何屏幕窗口中如果我按下左箭头键或退格键,当在提示符处没有输入任何内容时,屏幕似乎刷新,导致轻微的闪烁.在提示符下键入一些文本后使用退格键或左箭头不会导致闪烁(至少在到达提示符中的第一个字符之前).

有人见过这个吗?

gnu gnu-screen flicker

5
推荐指数
1
解决办法
2452
查看次数

GNU Screen运行bash init脚本

我确定在屏幕手册中有一个答案,但我找不到它!我希望GNU屏幕生成的bash shell除了已经运行的.bashrc之外还要在文件中提供源代码.

我无法在.bashrc中调用该文件,因为在我们的站点上.bashrc文件在登录时自动重新生成.

有任何想法吗?

编辑:

我创建了这个小脚本(screen_bash.sh):

bash --rcfile ~/.screen_bashrc
Run Code Online (Sandbox Code Playgroud)

然后补充说

shell $HOME/screen_bash.sh
Run Code Online (Sandbox Code Playgroud)

到我的.screenrc

〜/ .screen_bashrc文件是

<my_setup_stuff>
export SHELL=bash
Run Code Online (Sandbox Code Playgroud)

SHELL = bash是必要的,这样像vim这样的程序可以正确启动子shell.

bash gnu-screen

5
推荐指数
1
解决办法
3169
查看次数

如何在Perl中指定包版本?

我对5.10.0之前的文档与最新的版本模块之间存在冲突的建议感到有些困惑. Perl最佳实践清楚地表明版本字符串('v1.0.3')是坏的,并且应该指定一个版本,如下所示:

use version; our $VERSION = qv('1.0.3');
Run Code Online (Sandbox Code Playgroud)

但版本模块说我们回到使用版本字符串:

use version 0.77; our $VERSION = qv("v1.2.3");
Run Code Online (Sandbox Code Playgroud)

我们退步了,或者这背后有原因吗?

perl perl-module version

5
推荐指数
1
解决办法
773
查看次数

如何用空格替换intraline标签,保持对齐?

我喜欢使用空格来缩进而不是标签; 在行的开头替换制表符很容易sedvim:

s/^I/    /g
Run Code Online (Sandbox Code Playgroud)

但是如果一行中有选项卡(假设空格是选项卡字符的宽度):

'foo'^I ^I  => 'bar',
'bazzle'^I  => 'qux',
Run Code Online (Sandbox Code Playgroud)

每个选项卡都不对应于维持对齐的设定数量的空格.任何人都有一个狡猾的想法,如何在保持正确对齐的同时用空格替换这些制表符?

regex vim sed

5
推荐指数
2
解决办法
1806
查看次数

如何在Vim中创建带控件和功能键的映射?

我希望有一个映射来快速退出所有缓冲区,以便在我修改大量文件时使用.控制和功能键一起证明了一个很好的安全性,这样我就不小心碰到了这个组合,无意中离开了Vim.我尝试了以下映射:

map <C-F10> :qa<CR>
Run Code Online (Sandbox Code Playgroud)

无济于事.如果我放弃了控制,我可以单独退出F10 - 为什么在我的映射中不控制使用F10?

vim

5
推荐指数
1
解决办法
789
查看次数

如何在Vim中映射点击?

我希望能够在Gvim(或vim with set mouse=a)中的函数名称上单击(或cmd +单击我的Mac)并让它运行命令:tag以遵循ctag,但我不知道如何包含鼠标单击在Vim映射中.

vim

5
推荐指数
1
解决办法
2042
查看次数