如何测试依赖于机器或平台的功能或模块?例如,查看/依赖的东西$^O或像Net :: Ifconfig :: Wrapper这样的模块?我不需要测试Net :: Ifconfig :: Wrapper返回正确的值,但我确实需要测试我是否正在使用这些值做正确的事情.
谢谢!
编辑:测试$^O结果比我想象的要容易:
{
# <~> $ perl -e 'print $^O'
# linux
local $^O = 'linux';
$rc = GetOSType();
is($rc, $OS_LINUX, 'OS Check - linux');
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我认为这是一个只读变量.
我有越来越多的正则表达式,我用它来解析搜索"有趣"错误和调试语句的日志文件.我现在将它们分成5个桶,其中大部分落入3个大桶中.到目前为止,我有超过140种模式,而且这个模式正在不断增长.
大多数正则表达式都很简单,但它们也相当独特,因此我用单一模式捕获多个匹配的机会很少.由于我匹配的性质,模式往往是模糊的,因此很少匹配,所以我在每个输入行上做一个TON工作,最终结果是它无法匹配任何东西或匹配最后的通用之一.
由于输入的数量(数百兆字节的日志文件),我有时会等待一两分钟才能完成脚本.因此,我希望有一个更有效的解决方案.不过,我对牺牲速度的清晰度并不感兴趣.
我目前的正则表达式设置如下:
if (($line =~ m{Failed in routing out}) ||
($line =~ m{Agent .+ failed}) ||
($line =~ m{Record Not Exist in DB}) ||
...
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法来构建它,以便它更有效,但仍然可维护?谢谢!
当使用proxyHost,proxyPort并nonProxyHosts在Java属性修改URL连接,什么是通配符的有效用途nonProxyHosts性质?我能做以下任何一项或全部吗?
nonProxyHosts=server.company.comnonProxyHosts=*.local.company.comnonProxyHosts=192.168.101.110nonProxyHosts=192.168.101.*nonProxyHosts=192.168.101/23还有其他类型的模式吗?
谢谢!
当我遇到一些非常奇怪的行为时,我试图回答另一个SO问题。这是我的小测试用例:
(make-variable-buffer-local
(defvar my-override-mode-on-save nil
"Can be set to automatically ignore read-only mode of a file when saving."))
(defadvice file-writable-p (around my-overide-file-writeable-p act)
"override file-writable-p if `my-override-mode-on-save' is set."
(or
my-override-mode-on-save
ad-do-it))
(defun my-override-toggle-read-only ()
"Toggle buffer's read-only status, keeping `my-override-mode-on-save' in sync."
(interactive)
(setq my-override-mode-on-save (not my-override-mode-on-save))
(toggle-read-only))
(defun tester-fn ()
(interactive)
(let ((xxx (file-writable-p "/tmp/foofoo"))
(yyy (file-writable-p "/tmp/fooxxfoo")))
(message (concat "XXX: " (if xxx "yes" "no") " - YYY: " (if yyy "yes" "no")))))
Run Code Online (Sandbox Code Playgroud)
哪里:
/tmp/foofoo …在 VS Code 中编辑 Markdown 文档时,大纲框不显示 Markdown 文档的轮廓;它完全是空白/空的。我已经禁用了所有扩展,但行为没有改变(而且我只有一个与 markdown 相关的扩展,markdownlint)。我不知道这是否有效,但过去几个月肯定没有效果。
我以为我记得曾经在某个地方读书,但我找不到它.
我在当地工作,甚至在当地的分支机构工作,我会根据需要或每天或其他任何方式办理登机手续.当我将代码推送到我想将其推送到主存储库时,有没有办法按原样推送文件,而不是推送所有历史记录?或者当我从分支合并回main时,我可以不合并历史记录吗?
这些甚至是好主意吗?感谢您的帮助 - 仍在学习,在这里!
乔
我有一个Perl脚本,它会查找一堆日志文件,寻找"有趣"的行,对于一些有趣的定义.它生成一个HTML文件,该文件由一个表组成,该表的列是时间戳,文件名/亚麻布参考和"有趣"位.我喜欢做的是让文件名/ linenum成为一个实际的链接,在emacs中将光标放在该行号上.
emacsclientw会允许这样的事情(例如emacsclientw +60 foo.log),但我不知道要构建哪种URL/URI会让FireFox调用emacsclientw.原始HTML文件将是本地的,因此没有问题.
我应该以这种方式定义自己的MIME类型和钩子吗?
Firefox版本是3.5,我正在运行Windows,以防任何重要事项.谢谢!
如果我在基本模式下的缓冲区中有一个Python(或任何其他语言)文件,是否有一个命令可以让缓冲区自动检测它应该是什么语言并相应切换?
这段代码:
public class PMTest
{
private static class Runner { }
private static class Server extends Runner { }
private static class Task
{
public void delegate(Runner runner)
{
System.out.println("Task: " + runner.getClass().getName() +
" / " + this.getClass().getName());
}
}
private static class Action extends Task
{
public void delegate(Server server)
{
System.out.println("Action: " + server.getClass().getName() +
" / " + this.getClass().getName());
}
}
private static void foo(Task task, Runner runner)
{
task.delegate(runner);
}
private static void bar(Action task, …Run Code Online (Sandbox Code Playgroud) 在这种情况下,为什么未初始化的变量的行为/交互方式与初始化变量不同:
use strict;
use warnings;
our($foo) = 0;
BEGIN {
$foo = 2;
}
our($bar);
BEGIN {
$bar = 3;
}
print "FOO: <$foo>\n";
print "BAR: <$bar>\n";
Run Code Online (Sandbox Code Playgroud)
结果是:
$ perl test.pl
FOO: <0>
BAR: <3>
Run Code Online (Sandbox Code Playgroud)
Perl版本:
$ perl -v
This is perl 5, version 22, subversion 0 (v5.22.0) built for x86_64-linux
Run Code Online (Sandbox Code Playgroud)