小编Dav*_* W.的帖子

如何在Windows中设置环境变量(不像听起来那么容易)

请参阅下面的更新

让我解释一下情况:

在系统控制面板中,我设置JAVA_HOMEC:\Java\JDK1.6.然而,当我进入终端窗口看看发生了什么时,我得到了这个:

echo %JAVA_HOME%
D:\Program Files\Java\jre6
Run Code Online (Sandbox Code Playgroud)

这到底在哪里设置了,为什么它没有拿起我在控制面板中设置的值?我设置的其他环境变量已设置,但看起来有些东西会覆盖它.

警告的话:

虽然我是该系统的管理员,但他们对此采取了各种愚蠢的限制性政策.例如,当我删除某些内容时,我无法将我的回收站设置为警告我.Property右键单击回收站时,该设置不存在.我也做不到regedit.为了设置环境属性,我设置了一个MCC控制台,然后通过那里拉出系统控制面板.


更新

是的,我知道在我打开新的命令行提示之前,环境变量不会被重置.然而,这是我几周前设定的,自那以后机器已经启动了几次.

我把它设置在系统变量(下方框)中.如果我把它放在用户变量(上面的框)中,它确实设置正确,但PATH如果我将%JAVA_HOME%放在路径中,则设置不正确.

windows environment-variables

4
推荐指数
1
解决办法
1万
查看次数

对于Loop和Lexically Scoped变量

版本#1

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在其块内创建了自己的词法范围版本.

版本#2

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)

perl

4
推荐指数
2
解决办法
2887
查看次数

Perl Constant似乎不起作用

我有这个:

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)

perl constants

4
推荐指数
1
解决办法
185
查看次数

常春藤检索与分类器

我有以下内容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`一样.这样做有简单的方法吗?我知道我可以创建两种不同的配置,但这太过分了.我宁愿让罐子错过名字,因为它确实不影响战争本身.

ivy

4
推荐指数
1
解决办法
4639
查看次数

从网页中删除所有HTML标记

我正在做一些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上.

regex bash sed

4
推荐指数
2
解决办法
8474
查看次数

Perl RE匹配:如何将变量用于RE标志?

在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)

regex perl

4
推荐指数
1
解决办法
132
查看次数

如何快速匹配排序的两个文件的字段,但一个是另一个的子集

我有两个已排序的文件,并希望将它们合并为第三个,但我需要对输出进行排序.第二个文件中的一列是第一个文件的子集,第二个文件与第一个文件不匹配的任何位置都应填入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)

python sorting shell perl merge

3
推荐指数
1
解决办法
336
查看次数

Perl:将值列表声明为常量

我一直在使用[常量]编译指示,并快速询问如何声明常量列表:

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)

perl

3
推荐指数
1
解决办法
4704
查看次数

fetchall_arrayref中的foreach值

我正在尝试为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 dbi

3
推荐指数
1
解决办法
1万
查看次数

你如何覆盖替换操作?

我在玩 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)

perl overriding operator-overloading

3
推荐指数
1
解决办法
110
查看次数