我有一个创建可运行jar的ant脚本,我希望每次在代码中进行更改并保存它时它都会运行.我想在Eclipse中需要一些"保存后自动构建"选项.有这样的事吗?
我使用以下PHP代码列出当前目录下的所有文件和文件夹:
<?php
$dirname = ".";
$dir = opendir($dirname);
while(false != ($file = readdir($dir)))
{
if(($file != ".") and ($file != "..") and ($file != "index.php"))
{
echo("<a href='$file'>$file</a> <br />");
}
}
?>
Run Code Online (Sandbox Code Playgroud)
问题是列表不是按字母顺序排序的(也许它按创建日期排序?我不确定).
如何确保按字母顺序排序?
我有相当大的哈希(大约10M键),我想从中删除一些元素.
我通常不喜欢使用delete
或splice
和我拉闸复制我想要什么,而不是删除的内容,我不知道.但是这一次,由于哈希是真正的大,我想我会直接将它删除.
所以我做的是这样的:
foreach my $key (keys %hash) {
if (should_be_deleted($key)) {
delete($hash{$key});
}
}
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常.但是..如果我想在迭代它们之前删除一些元素怎么办?我将通过例子解释:
foreach my $key (keys %hash) {
if (should_be_deleted($key)) {
delete($hash{$key});
# if $key should be deleted, so does "$key.a", "kkk.$key" and some other keys
# I already know to calculate. I would like to delete them now...
}
}
Run Code Online (Sandbox Code Playgroud)
我想一些可能的解决方案 - 比如检查是否有键仍然存在,如在环或第一循环的第一步,创建密钥的列表中删除(并没有实际删除它们),则实际删除的另一个循环.
你对此有何看法?
UPDATE
似乎双通道方法已达成共识.但是,在第一遍中我仔细检查已经标记为删除的密钥,这是非常低效的.这有点递归,因为我不仅检查密钥,还计算应删除的其他密钥,尽管它们已经由原始密钥计算.
也许我需要使用一些更动态的数据结构来迭代密钥,这将动态更新?
我经常使用类似的东西
my $dir="/path/to/dir";
opendir(DIR, $dir) or die "can't open $dir: $!";
my @files = readdir DIR;
closedir DIR;
Run Code Online (Sandbox Code Playgroud)
或者有时我会使用glob
,但无论如何,我总是需要添加一两行来过滤掉.
,..
这很烦人.你通常如何处理这项共同任务?
我希望我的脚本perl在生成警告时死亡,包括由使用过的包生成的警告.
例如,这应该死:
use strict;
use warnings;
use Statistics::Descriptive;
my @data = ( 8, 9, 10, "bbb" );
my $stat = Statistics::Descriptive::Full->new();
$stat->add_data(@data);
Run Code Online (Sandbox Code Playgroud)
use warnings FATAL => 'all';
不会有帮助,因为它是词法范围的.测试:: NoWarnings也不起作用,因为它不会杀死脚本.
我想创建一个临时文件,写入文件句柄然后用文件名调用外部程序.
问题是我通常close
在写入文件之后和调用外部程序之前想要文件,但如果我理解正确 - close
一个tempfile()
导致它被删除.
那么这里的解决方案是什么?
我有几个100k的值.当我将它们绘制为R中的一条线时(使用plot(type="l")
x轴旁边的数字,刻度线以科学格式打印(例如0e+00,2e+04,...,1e+05
).相反,我希望它们是:
一个) 0,20kb,...,100kb
B)相同但现在第一个坐标应为1(即从1开始计数而不是0).
BTW R数组使用从1开始的编号(与perl,java等中的数组相比)所以我想知道为什么在绘制"他们"决定从0开始...
我总是确定如果我将一个Perl子程序传递给一个简单的标量,它就永远不会在子程序之外改变它的值.那是:
my $x = 100;
foo($x);
# without knowing anything about foo(), I'm sure $x still == 100
Run Code Online (Sandbox Code Playgroud)
所以,如果我想foo()
改变x
,我必须传递它的参考x
.
然后我发现事实并非如此:
sub foo {
$_[0] = 'CHANGED!';
}
my $x = 100;
foo($x);
print $x, "\n"; # prints 'CHANGED!'
Run Code Online (Sandbox Code Playgroud)
数组元素也是如此:
my @arr = (1,2,3);
print $arr[0], "\n"; # prints '1'
foo($arr[0]);
print $arr[0], "\n"; # prints 'CHANGED!'
Run Code Online (Sandbox Code Playgroud)
这有点让我感到惊讶.这是如何运作的?是不是子程序只获取参数的值?它是如何知道它的地址的?