请参阅下面的更新
让我解释一下情况:
在系统控制面板中,我设置JAVA_HOME为C:\Java\JDK1.6.然而,当我进入终端窗口看看发生了什么时,我得到了这个:
echo %JAVA_HOME%
D:\Program Files\Java\jre6
Run Code Online (Sandbox Code Playgroud)
这到底在哪里设置了,为什么它没有拿起我在控制面板中设置的值?我设置的其他环境变量已设置,但看起来有些东西会覆盖它.
警告的话:
虽然我是该系统的管理员,但他们对此采取了各种愚蠢的限制性政策.例如,当我删除某些内容时,我无法将我的回收站设置为警告我.
Property右键单击回收站时,该设置不存在.我也做不到regedit.为了设置环境属性,我设置了一个MCC控制台,然后通过那里拉出系统控制面板.
是的,我知道在我打开新的命令行提示之前,环境变量不会被重置.然而,这是我几周前设定的,自那以后机器已经启动了几次.
我把它设置在系统变量(下方框)中.如果我把它放在用户变量(上面的框)中,它确实设置正确,但PATH如果我将%JAVA_HOME%放在路径中,则设置不正确.
use warnings;
use strict;
my $count = 4;
for $count (1..8) {
print "Count = $count\n";
last if ($count == 6);
}
if (not defined($count)) {
print "Count not defined\n";
}
else {
print "Count = $count\n";
}
Run Code Online (Sandbox Code Playgroud)
这打印:
1
2
3
4
5
6
4
Run Code Online (Sandbox Code Playgroud)
为什么?因为for循环$count在其块内创建了自己的词法范围版本.
use warnings;
use strict;
my $count;
for $count (1..8) {
print "Count = $count\n";
last if ($count == 6);
}
if (not defined($count)) {
print "Count not …Run Code Online (Sandbox Code Playgroud) 我有这个:
use constant JAR_FILE => qr/\.jar$/;
my @dir_list = ...;
my @jar_list;
find ( sub {
return unless -f;
return unless JAR_FILE; #THIS IS THE TROUBLED LINE
push @jar_list, $File::Find::name;
}, @dir_list;
say join ": ", @jar_list;
Run Code Online (Sandbox Code Playgroud)
这将打印出@dir_list- jar文件和非jar文件中的所有文件;
但是,这个:
use constant JAR_FILE => qr/\.jar$/;
my @dir_list = ...;
my @jar_list;
find ( sub {
return unless -f;
return unless $_ =~ JAR_FILE; #Now explicitly do the comparison
push @jar_list, $File::Find::name;
}, @dir_list;
say join ": ", @jar_list; …Run Code Online (Sandbox Code Playgroud) 我有以下内容ivy.xml:
<ivy-module version="1.0"
xmlns:maven="http://maven.apache.org">
<configurations>
...
</configurations>
<dependencies>
<dependency org="com.foo" name="fubur"
rev="1.3" conf="runtime->default"/>
<dependency org="com.snafu" name="barfu"
rev="1.4" conf="runtime->default">
<artifact name="barfu"
maven:classifier="ID_10T"
type="jar" ext="jar"/>
</dependency>
</dependencies>
</ivy-module>
Run Code Online (Sandbox Code Playgroud)
在我build.xml,我想要为我正在建立的战争检索所有的罐子:
<ivy:retrieve
pattern="${lib.dir}/[artifact]-[classifier]-[revision].[ext]"
conf="runtime"/>
Run Code Online (Sandbox Code Playgroud)
不,那是行不通的......没有分类器fubar-1.3.jar.它将下载为fubar--1.3.jar
<ivy:retrieve
pattern="${lib.dir}/[artifact]-[revision].[ext]"
conf="runtime"/>
Run Code Online (Sandbox Code Playgroud)
这也不好.barfu-ID_10T-1.4.jar将下载为barfu-1.4.jar.
我希望战争中的罐子barfu-ID_10T-1.4.jar和fubar-1.3-jar`一样.这样做有简单的方法吗?我知道我可以创建两种不同的配置,但这太过分了.我宁愿让罐子错过名字,因为它确实不影响战争本身.
我正在做一些BASH shell脚本curl.如果我的curl命令返回任何文本,我知道我有一个错误.返回的文本curl通常是HTML格式.我想如果我可以删除所有HTML标记,我可以将结果文本显示为错误消息.
我在考虑这样的事情:
sed -E 's/<.*?>//g' <<<$output_text
Run Code Online (Sandbox Code Playgroud)
但我明白了 sed: 1: "s/<.*?>//": RE error: repetition-operator operand invalid
如果我更换*?用*,我没有得到错误(我没有得到任何的文字要么).如果我删除global(g)标志,我会得到相同的错误.
这是在Mac OS X上.
在Perl中:
my $string = "This is a test";
say "String matches" if $string =~ /this is a test/; # Doesn't print
say "String sort of matches" if string =~ /this is a test/i; # Prints
Run Code Online (Sandbox Code Playgroud)
将i标志添加到RE匹配的末尾会导致匹配忽略大小写.
我有一个程序,我在其中指定要在单独的数据文件中匹配的正则表达式.这很好用.但是,我希望能够扩展它并能够指定在检查匹配时使用的正则表达式标志.
但是,在Perl中,那些RE标志不能在标量中:
my $re_flags = "i";
my $string = "This is a test";
say "This sort of matches" if $string =~ /this is a test/$re_flags;
Run Code Online (Sandbox Code Playgroud)
这导致:
Scalar found where operator expected at ,,, line ,,, near "/this is a test/$re_flags"
(Missing operator …Run Code Online (Sandbox Code Playgroud) 我有两个已排序的文件,并希望将它们合并为第三个,但我需要对输出进行排序.第二个文件中的一列是第一个文件的子集,第二个文件与第一个文件不匹配的任何位置都应填入NA.这些文件每个都很大(~20,000,000条)记录,因此将内容加载到内存中很困难,速度也是一个问题.
文件1看起来像这样:
1 a
2 b
3 c
4 d
5 e
Run Code Online (Sandbox Code Playgroud)
文件2看起来像这样:
1 aa
2 bb
4 dd
5 ee
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的
1 a aa
2 b bb
3 c NA
4 d cc
5 e ee
Run Code Online (Sandbox Code Playgroud) 我一直在使用[常量]编译指示,并快速询问如何声明常量列表:
use constant {
LIST_ONE => qw(this that the other), #BAD
LIST_TWO => ("that", "this", "these", "some of them"), #BAR
LIST_THREE => ["these", "those", "and thems"], #WORKS
};
Run Code Online (Sandbox Code Playgroud)
最后一个问题是它创建了对列表的引用:
use constant {
LIST_THREE => ["these", "those", "and thems"],
};
# Way 1: A bit wordy and confusing
my $arrayRef = LIST_THREE;
my @array = @{$arrayRef};
foreach my $item (@array) {
say qq(Item = "$item");
}
# Way 2: Just plain ugly
foreach my $item (@{&LIST_THREE}) {
say qq(Item = "$item"); …Run Code Online (Sandbox Code Playgroud) 我正在尝试为fetchall_arrayref中的每个值执行一个foreach循环,并且遇到了一些麻烦.
我有:
my $list = $sth->fetchall_arrayref({});
print Dumper($list);
Run Code Online (Sandbox Code Playgroud)
这给了我:
$VAR1 = [
{
'ID_NUMBER' => '123'
},
{
'ID_NUMBER' => '456'
},
{
'ID_NUMBER' => '5666'
},
{
'ID_NUMBER' => '45645'
},
{
'ID_NUMBER' => '23422'
}
];
Run Code Online (Sandbox Code Playgroud)
我不知道如何格式化我的foreach循环打印每个id_number的值.最终我想用每个值运行一个查询,但是一旦我开始工作,我就可以想出来.
谢谢你的帮助.
我在玩 Perl 并创建一个字符串对象。我知道在现实世界中这是一个非常糟糕的主意。我这样做纯粹是为了好玩。
我正在使用重载来重载标准 Perl字符串运算符和大多数其他语言中的标准运算符。
use strict;
use warnings;
use feature qw(say);
my $obj_string1 = Object::String->new("foo");
my $obj_string2 = Object::String->new("bar");
my $reg_string1 = "foobar";
my $reg_string2 = "barfu";
# Object::String "stringifies" correctly inside quotes
say "$obj_string1 $obj_string2";
# Use "+" for concatenations
say $obj_string1 + $obj_string2; # Works
say $obj_string1 + $reg_string1 + $reg_string2 # Works
say $reg_string1 + $obj_string1 # Still works!
say $reg_string1 + $obj_string1 + $reg_string2; # Still works! …Run Code Online (Sandbox Code Playgroud)