小编Joh*_*Doe的帖子

在产品启动时清理工作区.metadata文件夹

我开发了一个Eclipse插件,它扩展到了Eclipse UI,我们将它作为一个完整的Eclipse产品提供.该插件以一些汽车项目为目标.

可以从项目配置产品版本,执行批处理文件将启动产品的正确版本.

所以最后的命令将是这样的:

start /B %PRODUCT_PATH%/eclipse.exe -clean -configuration %PATH_TO_PROJECT_CONFIG% -data %PROJECT_PATH
Run Code Online (Sandbox Code Playgroud)

当从一个产品版本切换到另一个产品版本时,问题就出现了,.metadata文件夹已损坏或者产品之间的信息不兼容,我不确定究竟发生了什么,但我在启动时遇到了零星的异常.

当我清理.metadata.metadata在项目位置没有现有文件夹的情况下启动产品时,一切都正常运行.

是否有一个命令行选项供Eclipse .metadata在启动前清理工作区?

eclipse eclipse-plugin

8
推荐指数
1
解决办法
940
查看次数

为什么子例程需要在声明变量后使用呢?

让我们假设我们有这个代码,为什么它失败了显式包名称错误,因为函数只在声明后才被调用$value

use strict;
use warnings;

sub print_value{
    print "\n$value";
}

my $value = 2;
print_value();
Run Code Online (Sandbox Code Playgroud)

这在编译时失败:

Global symbol "$value" requires explicit package name at file.pl line 5.
Execution of file.pl aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)

这段代码完美无缺:

use strict;
use warnings;

my $value = 2;
print_value();

sub print_value{
    print "\n$value";
}
Run Code Online (Sandbox Code Playgroud)

忽略这种编程风格或不推荐的编码风格的无用性,只关注上下文.

perl scope subroutine

7
推荐指数
1
解决办法
436
查看次数

引用相等的字符串

在Perl中,如果我创建两个对数组元素的引用,则两个指针是相等的.

my $ref1 = \$array[0];
my $ref2 = \$array[0];
print "$ref1\n$ref2";
Run Code Online (Sandbox Code Playgroud)

这同样适用于对存储字符串的变量的两个引用,这些指针是相等的.

如果我创建两个存储相等字符串的变量,则引用不相等.

为什么他们不平等?相同的数据存储在不同的地方?

Perl是否引用变量而不是内存位置?

在Java中,正如您在此处看到的,四个相等的字符串指的是相同的内存位置.

有人可以解释一下吗?

perl pointers reference

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

如何在BEGIN块中使用外部库

我想在BEGINPerl脚本的块中使用外部库.我做的第一个测试是检查@INC如果我推出一些值,我是否会变成人物:

use strict;
use warnings;

BEGIN {
    push @INC, "d:/external_pm/";

    use Data::Dumper;
    print Dumper @INC;
}
Run Code Online (Sandbox Code Playgroud)

哪个按预期工作并显示:

$VAR1 = 'D:/perl/5163/site/lib';
$VAR2 = 'D:/perl/5163/lib';
$VAR3 = '.';  # I am not sure about this one?!
$VAR4 = 'd:/external_pm/';
Run Code Online (Sandbox Code Playgroud)

现在我想在以下后面导入一个模块push:

use strict;
use warnings;

BEGIN {
    push @INC, "d:/external_pm/";

    use Data::Dumper;
    print Dumper @INC;
    use ExtScript;
}
Run Code Online (Sandbox Code Playgroud)

接下来的错误显示我@INC没有更新:
Can't locate ExtScript.pm in @INC (@INC contains: D:/perl/5163/site/lib D:/perl/5163/lib .) at file.pl line 9. BEGIN failed--compilation …

perl

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

检测正在将文件复制到文件夹中

我正在运行一个脚本,如果它不存在(或不一致),则从特定位置复制一个文件夹.当我多次运行脚本2次以上时会出现问题.当第一个脚本试图复制文件时,第二个脚本会尝试同样的事情导致一团糟.我怎么能避免这种情况?类似于系统范围的互斥体.

我尝试了一个简单的测试-w,我手动复制了文件夹,当文件夹复制时我运行脚本:

use strict;
use warnings;

my $filename = 'd:\\folder_to_copy';
if (-w $filename) {
  print "i can write to the file\n";
} else {
  print "yikes, i can't write to the file!\n";
}
Run Code Online (Sandbox Code Playgroud)

当然这不起作用,因为我仍然有写入该文件夹的访问权限.有关如何检查文件夹是否被复制Perl或使用的任何想法batch commands

windows perl lockfile batch-file

2
推荐指数
1
解决办法
238
查看次数

system()返回错误的退出代码

system用来调用外部应用程序,我需要解释它的退出代码.

我知道system返回命令的退出代码乘以256,但在foo.bat我写入时exit 256结果为零.

为什么会这样?

perl

2
推荐指数
1
解决办法
546
查看次数

找到eclipse设置名称在plugin_customization.ini中设置

我想为通过plugin_customization.ini.

如果我想默认禁用Build automatically,我在plugin_customization.ini下面的行中写入:
org.eclipse.core.resources/description.autobuilding=false

org.eclipse..../.../例如,如何找到禁用拼写检查的设置名称?还有其他设置吗?

eclipse eclipse-plugin

2
推荐指数
1
解决办法
1052
查看次数

如何禁用搜索二进制文件

CDT plugin(版本9.4.3)是否有禁用Searching for binaries...作业的设置?

eclipse-cdt

2
推荐指数
1
解决办法
849
查看次数

如果评估递增值

我试图抓住我的值未初始化并增加它的情况.从我读到的,$value将基于上下文行动(如果我连接它,它将作为空字符串,如果我增加它,它将作为0).

我不明白为什么上面的代码给了我: The value outside of the if: 1它也没有显示:The value from if: 1

use strict;
use warnings;

my $value;

if (( $value++) == 1){
    print "The value from if: $value";
}

print "The value outside of the if: $value";
Run Code Online (Sandbox Code Playgroud)

perl

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

从绝对路径转换为 ​​IFile

我正在使用 eclipse 插件,其中Project Explorer视图中存在的项目的工作区名称与项目的实际路径不同。因此,D:\test当我尝试获取项目位置时,考虑一个位于的项目,它指向D:\test_plugin_specific_suffix.

有没有办法从绝对路径(指向本地路径D:\test\testfile.txt)获取 IFile ?

我想创建一个指向我有绝对路径的特定文件的超链接。当我单击超链接上的控制台时,它应该在编辑器中打开该文件。

eclipse eclipse-plugin eclipse-rcp

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

Perl在分配时自动生效

当未显示的密钥分配给变量时,Perl是否真正自动生成密钥?

我有这个代码:

my $variable = $self->{database}->{'my_key'}[0];

该变量$self->{database}->{'my_key'}[0]在我的哈希值中是未定义的,但如果我在赋值后打印了一个Dumper,我会惊讶于它my_key已创建.

我知道这种情况的功能:

use Data::Dumper;

my $array;

$array->[3] = 'Buster';  # autovivification
print Dumper( $array );
Run Code Online (Sandbox Code Playgroud)

这会给我结果:

$VAR1 = [ undef, undef, undef, 'Buster' ];

但从来没有期望在其他方面工作,在哪里: my $weird_autovivification = $array->[3]; 也将生存$array->[3].

perl autovivification

0
推荐指数
2
解决办法
160
查看次数

为什么编译器在返回错误类型时不会抱怨?

考虑到下面的功能,我注意到编译器没有发出任何问题:

private static int returnTwoTypes() {
    int a = 1;
    if (a == 1) {
        return -1;
    }
    return 'a';
}
Run Code Online (Sandbox Code Playgroud)

为什么我可以在函数返回类型时返回a character和a ?intint

java

0
推荐指数
1
解决办法
104
查看次数

没有分隔符的不寻常的替代品

我无法破译这个正则表达式是什么:

$c =~ s^.*/^^g;
Run Code Online (Sandbox Code Playgroud)

我无法访问输入或输出.

有没有人知道它的作用?

regex perl

-1
推荐指数
1
解决办法
65
查看次数