我有一个越来越大的Perl脚本,所以我想把它分解成多个脚本.即,我想取出一些大的哈希声明并将它们放入另一个文件中.如何让原始脚本能够查看和使用现在在另一个脚本中声明的变量?
这让我疯了,因为我有一段时间没有使用Perl而且因为我的生活无法解决这个问题
参考:http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html
"如果你的程序尝试autounbox null,它将抛出NullPointerException."
如果尝试将null赋给布尔值,javac将给出编译时错误.说得通.尽管如此,将null赋给布尔值也是如此.我猜也是有道理的.
但是让我们考虑一下这样一个事实:当你尝试autounbox null时你会得到一个NPE.这意味着你不能在没有空值检查或异常处理的情况下安全地对布尔值执行布尔运算.在整数上进行数学运算也是如此.
很长一段时间,我是java1.5 +中自动装箱的粉丝,因为我认为它让java更接近真正的面向对象.但是,昨晚遇到这个问题之后,我得说我认为这很糟糕.当我尝试使用未初始化的原语时,编译器给我一个错误是一件好事.如果我输了,我不想使用自动装箱.
我想我可能误解了自动装箱的问题,但与此同时我永远不会接受布尔值应该能够有3个值.谁有人解释这个?我没有得到什么?
有一个perl脑筋急转弯:
my @l = ('a', 'b', 'c');
for (@l) {
my $n = 1;
print shift @l while (@l and $n --> 0);
print "\n";
}
Run Code Online (Sandbox Code Playgroud)
什么是印刷品?应该是a,b和c,对吗?但哦等等,实际上某处有一个错误,它只打印a和b.可能只是一些愚蠢的一个一个,应该很容易解决,对吧?
好的,所以做一个小的代码更改来测试并改变@l到
my @l = ('a', 'b', 'c', 'd');
Run Code Online (Sandbox Code Playgroud)
什么是印刷品?可能是a,b和c因为那个愚蠢的一个,对吗?......等一下,实际上它仍然只打印a和b.好的,所以错误是它只打印前两个字符.
再次将@l更改为
my @l = ('a', 'b', 'c', 'd', 'e');
Run Code Online (Sandbox Code Playgroud)
嗯,现在打印a,b和c.但不是d或e.实际上,我们从现在开始添加的每两个字母都会使它打印出序列中的下一个字母.因此,如果我们添加f,它仍然只是打印a,b和c,但如果我们添加f和g,它将打印a,b,c和d.
对于$ n的不同值,这也会发生类似的结果.
那么这里发生了什么?
我如何编写一个循环,在循环的"in"子句中选择一个类型的col varchar(10),但是然后将这些值插入到想要它们的col中varchar(9)?基本上我试图从一个精度到另一个精度"强制转换",如果这有任何意义的话.例:
FOR V_TEN IN (SELECT THIS_IS_VARCHAR_TEN FROM TABLE WHERE SOMETHING=’VALUE’)
LOOP
INSERT INTO OTHER_TABLE
(THIS_IS_VARCHAR_NINE)
VALUES
(V_TEN);
END LOOP;
Run Code Online (Sandbox Code Playgroud)
错误是列类型不同.我试图寻找to_char()和cast()但也似乎是我想要的.我意识到这里的精度有所下降,并且可以接受,因为我实际上知道varchar(10)列中的值总是9个字符.