从我读过的关于使用Perl模块的所有内容来看,基本用法是:
.pm扩展名的模块文件,其中包含语句package <name>,其中<name>是没有扩展名的模块的文件名.use <name>;.我正在编码的应用程序有一个主代码脚本,它使用大约5个模块.我忘记package <name>在模块中包含该语句,但我的代码仍然可以正常运行该use <name>语句.我开始收到Undefined subroutine其中一个模块的错误,所以我将package语句添加到每个模块中.现在其余的模块停止工作了.是什么赋予了?
例:
mainapp.pl
#!/usr/bin/perl
use UtyDate;
my $rowDate = CurrentDate("YYYYMMDD");
Run Code Online (Sandbox Code Playgroud)
UtyDate.pm
#!/usr/bin/perl
package UtyDate;
sub CurrentDate
{
#logic
}
return 1;
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我收到错误Undefined subroutine &main::CurrentDate called at....但是,如果我package UtyDate;从UtyDate.pm中删除该行,我没有错误.这种情况存在于几个但不是所有模块中.
显然有很多代码我没有展示,但我很困惑,我没有展示的任何代码可能会影响我在这里展示的包/使用结构.
什么是可靠地使用"isa()"的"最佳"方式?换句话说,它可以在任何值上正确工作,而不仅仅是一个对象.
"最佳",我的意思是缺乏未处理的角落案例以及缺乏潜在的性能问题,因此这不是一个主观问题.
这个问题提到了两种似乎可靠的方法(请注意,UNIVERSAL::isa()不应该使用旧式,并且在Q的答案中有充分记录的原因):
eval { $x->isa("Class") }
#and check $@ in case $x was not an object, in case $x was not an object
use Scalar::Util 'blessed';
blessed $x && $x ->isa($class);
Run Code Online (Sandbox Code Playgroud)
第一个使用eval,第二个使用B::(至少对于Scalar :: Util的非XS风味).
如果$x是包含类名的标量,第一个似乎不能正常工作,如下图所示,所以我倾向于#2(使用blessed),除非somoene指出一个很好的理由不这样做.
$ perl5.8 -e '{use IO::Handle;$x="IO::Handle";
eval {$is = $x->isa("IO::Handle")}; print "$is:$@\n";}'
1:
Run Code Online (Sandbox Code Playgroud)
有没有客观的理由选择这两种方法中的一种(或者我不知道的第三种方法),如性能,不处理某些特殊情况等等?
是否可以在web.config中添加某种限制来限制URL参数长度?我想尽可能地阻止人们提交过大的URL参数,这样如果有人试图用大量无效的URL参数"攻击"它,服务器就不会超额必须征税.
假设您添加了一个控制器和操作(例如:) story/index,并希望通过执行功能测试
rake test:functionals
Run Code Online (Sandbox Code Playgroud)
然后你发现你的同事正在进行的项目的另一部分实际上在你的功能测试开始之前在更早的地方(另一个控制器/动作)打破了测试.
在这种情况下,你可以只运行一个功能测试,这是你的吗?
我最近听了一个播客,该播客对使用$()和使用进行了评论jQuery().据说,每次$()使用时都会创建一个新对象,并且在jQuery()使用时,情况并非如此.我谷歌周围但没有找到关于这个特定主题的任何内容.
我意识到这不是一个典型的例子,但以下是我对这个问题的答案感兴趣的原因.
我有一个页面,用户将在浏览器中加载一整天(24小时,或可能更长),并且每隔约5秒对DOM进行更新,这是通过jQuery调用AJAX(AJAX调用部分)的结果无关更新DOM -更新到DOM使用HTML的字符串和一个jQuery对象的调用完成.empty()后.html()).
听到这个,我随后把所有的$()电话都拨打了jQuery()电话,但我想知道:
使用$()vs使用jQuery()不好的做法?这两者之间的差异是微不足道的吗?或者它在大型项目中是否真的值得注意?
(use '[clojure.contrib.trace])
(dotrace [str] (reduce str [\a \b]))
Run Code Online (Sandbox Code Playgroud) 我有一个第三方应用程序,我想从命令行静默安装。
该应用程序为 PPLive,网址为:http ://www.pptv.com/en/
它是一个 NSIS 安装程序,目前在静默安装时安装工具栏和其他软件,完成后启动等。
在不重新打包的情况下,如何从静默命令行安装控制普通安装程序页面上的复选框选项。
有可能吗?
我正在尝试自动构建使用Bloomberg插件降低实时价格的Excel 2007电子表格.问题是,当我通过win32com打开Excel时,Bloomberg插件无法加载(因此所有公式都以"#NAME?"错误结束).
手动卸载并重新安装插件有效,但从录制的宏复制VBA代码会导致"运行时错误'13':类型不匹配"错误.我可以单击"结束"按钮,一切运行正常,但我想让它完全自动化.
我的代码是:
import win32com.client
xl = win32com.client.gencache.EnsureDispatch("Excel.Application")
xl.Visible = True
MainWorkBook = xl.Workbooks.Add(1)
xl.AddIns("Bloomberg Excel Tools").Installed = False
xl.AddIns("Bloomberg Excel Tools").Installed = True
Run Code Online (Sandbox Code Playgroud)
设置DisplayAlerts = False不会捕获运行时错误.
AFAIK,F#Map和set被实现为红黑树,所以我猜这些迭代将是按顺序遍历.我做了一些测试,迭代结果总是排序.但我想确定一下.
它是按顺序遍历吗?
我有一个大量使用帆布的应用程序(dinamyc创建,圆圈,正方形,刷笔,某种在线微软涂料).我正在寻找支持IE7 +的最佳兼容canvas js库.有什么建议?我尝试了excanvas.js,但我没有得到与我在firefox中看到的相同的结果.
javascript ×2
perl ×2
asp.net-mvc ×1
bloomberg ×1
c# ×1
canvas ×1
clojure ×1
excel ×1
f# ×1
isa ×1
iteration ×1
jquery ×1
map ×1
nsis ×1
perl-module ×1
python ×1
set ×1
testing ×1
web-config ×1
win32com ×1