我在Windows XP上使用ActivePerl 5.8.
use strict;
use warnings;
use Data::Dumper;
Run Code Online (Sandbox Code Playgroud)
我的脚本中使用了三个子例程.
要检测调用堆栈,我只能插入一些print "some location";并从控制台窗口检查打印结果.
有什么好方法可以监控它吗?谢谢.
我希望根据用户的偏好,致命错误可以降级为警告(或者相反,警告可以升级为致命错误)。目前,我正在die像这样使用和覆盖它:
my $force;
BEGIN {
no warnings 'once';
Getopt::Long::Configure('pass_through');
GetOptions('force', \$force);
*CORE::GLOBAL::die = sub { warn @_ } if $force;
Getopt::Long::Configure('no_pass_through');
}
use My::Module;
...
die "maybe";
...
exit(1) if $force;
exit(0); # success!
Run Code Online (Sandbox Code Playgroud)
我不喜欢这种方法,主要是因为有几个地方我仍然想死(例如缺少命令行参数)。我宁愿更改(大多数)实例dietowarn并执行条件use warnings FATAL => 'all'1。问题是它use warnings是词法范围的,所以这是无效的:
if (!$force) {
use warnings FATAL => 'all';
}
Run Code Online (Sandbox Code Playgroud)
尝试使用后缀条件是一个语法错误:
use warnings FATAL => 'all' unless $force;
Run Code Online (Sandbox Code Playgroud)
并且use不能在表达式中使用:
$force or use warnings FATAL => 'all'; # syntax …Run Code Online (Sandbox Code Playgroud) 以下是我的规格:OS X Tiger Perl 5.8使用捆绑了ActiveTcl v8.5的Tkx
我已经使用PAR/pp成功创建了具有上述配置的独立应用程序,但它不是一个完全令人满意的解决方案:
是否有其他途径可以绕过这些问题?
我的文件的最后修改时间改变了3600秒(一小时),具体取决于我系统的夏令时设置.statmtime的状态文档是从纪元开始以秒为单位测量的.因此,mtime不应该依赖于DST.
这导致我的应用程序在不应该检测/报告文件时将其视为不同.
我有一个表,其中包含配置选项。这些值存储为字符串,但可以表示不同类型的数据。该TYPE列标识值的数据类型。(STRING,INTEGER,FLOAT或BOOLEAN中的一种)。
CREATE TABLE CONFIG (
NAME VARCHAR2(256) NOT NULL,
TYPE VARCHAR2(20) NOT NULL,
VALUE VARCHAR2(1024)
)
Run Code Online (Sandbox Code Playgroud)
我正在尝试运行包含数字比较的查询,例如
SELECT NAME, VALUE FROM CONFIG
WHERE TYPE = 'INTEGER' AND to_number(VALUE) > 100
Run Code Online (Sandbox Code Playgroud)
但我的查询失败,并显示“ ORA-01722:无效编号”。这些值(对于INTEGER类型的记录)均不包含无效字符。为什么会出现“无效数字”错误,我该如何解决查询问题?