我最近遇到的一个更有趣的事情是制定芯片布局规划和确定硅片封装的艺术和科学.我想为"感兴趣的软件专家"阅读有关该主题的一些材料.
有没有人有任何建议(网站或书籍,只要它是一个很好的质量)?
我正在为一些Perl脚本构建回归系统(而不是单元测试).
该系统的核心组成部分是
`perl script.pl @params 1>stdoutfile 2>stderrfile`;
Run Code Online (Sandbox Code Playgroud)
但是,在实际处理脚本的过程中,它们有时不会编译(Shock!).但是perl本身会正确执行.但是,我不知道如何在stderr上检测Perl是否无法编译(因此写入stderr),或者我的脚本在输入上被禁止(因此写入stderr).
如何检测程序是否执行,没有详尽地查找Perl错误消息并轻击stderr文件?
假设我有一种情况,我试图尝试一些Perl代码.
perl -d foo.pl
Run Code Online (Sandbox Code Playgroud)
Foo.pl认为它是快乐的方式(这是一个很大的脚本),我决定我想重新运行一个特定的子程序并单步执行它,但不重新启动该过程.我该怎么办?
假设我有一个功能
CL-USER> (defun trimmer (seq) "This trims seq and returns a list"
(cdr
(butlast seq)))
TRIMMER
CL-USER> (trimmer '(1 2 3 VAR1 VAR2))
(2 3 VAR1)
CL-USER>
Run Code Online (Sandbox Code Playgroud)
请注意,由于QUOTE,VAR1和VAR2未解析.假设我想将符号VAR1和VAR2解析为它们的值 - 是否有标准函数来执行此操作?
我有一个项目,我需要在动态视图上执行许多操作.如果这些操作中的任何一个失败,或者程序中出现了一些错误,我需要能够撤销提交.
直接的方式似乎是简单地将命令放入队列中,然后,当我的程序完成处理时,执行队列.但是,我担心一些异常事件会中断提交并导致服务器上的数据集不一致.
或者,换句话说,我正在寻找一种在Clearcase动态视图中创建svn样式的"变更集"的方法.我正在使用的脚本语言是Perl,如果这很重要的话.
想法?
通常在Perl中,我想从散列中打印出列/行数据.
这很简单:
foreach my $k(keys %h)
{
print $k, "\t", $h{$k}, "\n";
}
Run Code Online (Sandbox Code Playgroud)
但是,如果密钥恰好具有不同的长度,那么格式化看起来非常锯齿状.我已经研究了格式,它通常对于我正在寻找的东西来说太重了,这是一个"简单"的列行对齐漂亮的打印机.
让L = [1,2,3,4]
我们的名单.
然后1 in L
是True
.2 in L
也是True
.
是否有一种干净的写作方式(1,2) in L
并让它成真?
也就是说,给定一个列表L
和测试名单T
和关系多的,如果所有成员T
都在L
,那么T multi-in L
就是True
,否则T multi-in L
是False
.
当然我可以写一个多功能,但这看起来很难看.
假设我有一个仅用于预生产代码的文件
我想确保它不会在生产代码中运行 - 任何调用都必须失败.
文件顶部的这个片段不起作用 - 它破坏了Python语法,该语法指定return
必须在函数中进行.
if not __debug__:
return None
Run Code Online (Sandbox Code Playgroud)
这里最好的解决方案是什么 - 不涉及制造巨大的其他方案,即.:-)
假设我有一个返回闭包的函数:
sub generator
{
my $resource = get_resource();
my $do_thing = sub
{
$resource->do_something();
}
return $do_thing;
}
# new lexical scope
{
my $make_something_happen = generator();
&$make_something_happen();
}
Run Code Online (Sandbox Code Playgroud)
我希望能够确保当$make_something_happe
n从范围中删除时,我可以调用一些$resource->cleanup();
当然,如果我有一个类,我可以使用析构函数来做这个,但对于我想要做的事情,这似乎有点重量级.在构建对象的意义上,这实际上不是一个"对象",它只是一个需要在启动时和死亡之前执行某些代码的功能.
我如何在Perl中做到这一点(出于好奇,任何语言都支持这个想法)?
我在其他地方看过这个功能,我记得,它有一个标准名称.我记不起来了,仔细阅读亚历山大的list.lisp
图书馆并没有透露任何秘密.
(defun familiar-function (list func)
(loop for e in list
collect (if (listp e)
(familiar-function e func)
(funcall func e))))
Run Code Online (Sandbox Code Playgroud) perl ×4
common-lisp ×2
lisp ×2
python ×2
clearcase ×1
closures ×1
debugging ×1
evaluation ×1
formatting ×1
hardware ×1
silicon ×1
symbols ×1
testing ×1