在积累了足够的测试后,运行它们都需要一些实时的时间,我查看了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) 该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中进行多线程处理时应该注意哪些模块?
我想做一些相当低的性能; 我想线程是同时运行多个工作者,每个人都在不同的时间内睡觉.
在查看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中而无需进一步编码,因此字符'+','/'和'='的开头或翻译.既然没有明确的标准,那么正确的方法是什么?
我最近开始使用GNU Screen,但遇到了一个非常烦人的问题.
在任何屏幕窗口中如果我按下左箭头键或退格键,当在提示符处没有输入任何内容时,屏幕似乎刷新,导致轻微的闪烁.在提示符下键入一些文本后使用退格键或左箭头不会导致闪烁(至少在到达提示符中的第一个字符之前).
有人见过这个吗?
我确定在屏幕手册中有一个答案,但我找不到它!我希望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.
我对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)
我们退步了,或者这背后有原因吗?
我喜欢使用空格来缩进而不是标签; 在行的开头替换制表符很容易sed或vim:
s/^I/ /g
Run Code Online (Sandbox Code Playgroud)
但是如果一行中有选项卡(假设空格是选项卡字符的宽度):
'foo'^I ^I => 'bar',
'bazzle'^I => 'qux',
Run Code Online (Sandbox Code Playgroud)
每个选项卡都不对应于维持对齐的设定数量的空格.任何人都有一个狡猾的想法,如何在保持正确对齐的同时用空格替换这些制表符?
我希望有一个映射来快速退出所有缓冲区,以便在我修改大量文件时使用.控制和功能键一起证明了一个很好的安全性,这样我就不小心碰到了这个组合,无意中离开了Vim.我尝试了以下映射:
map <C-F10> :qa<CR>
Run Code Online (Sandbox Code Playgroud)
无济于事.如果我放弃了控制,我可以单独退出F10 - 为什么在我的映射中不控制使用F10?
我希望能够在Gvim(或vim with set mouse=a)中的函数名称上单击(或cmd +单击我的Mac)并让它运行命令:tag以遵循ctag,但我不知道如何包含鼠标单击在Vim映射中.