我开发了一个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在启动前清理工作区?
让我们假设我们有这个代码,为什么它失败了显式包名称错误,因为函数只在声明后才被调用$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中,如果我创建两个对数组元素的引用,则两个指针是相等的.
my $ref1 = \$array[0];
my $ref2 = \$array[0];
print "$ref1\n$ref2";
Run Code Online (Sandbox Code Playgroud)
这同样适用于对存储字符串的变量的两个引用,这些指针是相等的.
如果我创建两个存储相等字符串的变量,则引用不相等.
为什么他们不平等?相同的数据存储在不同的地方?
Perl是否引用变量而不是内存位置?
在Java中,正如您在此处看到的,四个相等的字符串指的是相同的内存位置.
有人可以解释一下吗?
我想在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 …
我正在运行一个脚本,如果它不存在(或不一致),则从特定位置复制一个文件夹.当我多次运行脚本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?
我system用来调用外部应用程序,我需要解释它的退出代码.
我知道system返回命令的退出代码乘以256,但在foo.bat我写入时exit 256结果为零.
为什么会这样?
我想为通过plugin_customization.ini.
如果我想默认禁用Build automatically,我在plugin_customization.ini下面的行中写入:
org.eclipse.core.resources/description.autobuilding=false
org.eclipse..../.../例如,如何找到禁用拼写检查的设置名称?还有其他设置吗?
我试图抓住我的值未初始化并增加它的情况.从我读到的,$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) 我正在使用 eclipse 插件,其中Project Explorer视图中存在的项目的工作区名称与项目的实际路径不同。因此,D:\test当我尝试获取项目位置时,考虑一个位于的项目,它指向D:\test_plugin_specific_suffix.
有没有办法从绝对路径(指向本地路径D:\test\testfile.txt)获取 IFile ?
我想创建一个指向我有绝对路径的特定文件的超链接。当我单击超链接上的控制台时,它应该在编辑器中打开该文件。
当未显示的密钥分配给变量时,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].
考虑到下面的功能,我注意到编译器没有发出任何问题:
private static int returnTwoTypes() {
int a = 1;
if (a == 1) {
return -1;
}
return 'a';
}
Run Code Online (Sandbox Code Playgroud)
为什么我可以在函数返回类型时返回a character和a ?intint
perl ×8
eclipse ×3
batch-file ×1
eclipse-cdt ×1
eclipse-rcp ×1
java ×1
lockfile ×1
pointers ×1
reference ×1
regex ×1
scope ×1
subroutine ×1
windows ×1