我一直在使用[常量]编译指示,并快速询问如何声明常量列表:
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函数,但我不是很清楚三点:
sub inittwiddle {
my ($m,$n,$aref) = @_;
my $i;
$$aref[0] = $n+1;
for ($i=1; $i != $n-$m+1; $i++) {
$$aref[$i] = 0;
}
while($i != $n+1) {
$$aref[$i] = $i+$m-$n;
$i++;
}
$$aref[$n+1] = -2;
$$aref[1] = 1 if ( $m == 0 );
}
Run Code Online (Sandbox Code Playgroud)
首先,它my ($m,$n,$aref) = @_; 代表什么?
第二,如何理解$$为......$$aref[0] = $n+1;
并且这个函数被调用为inittwiddle($M,$N,\@p); \@p代表什么?
我在debianserver上设置了Jenkins,我正在尝试创建第一个android构建但是ant无法被调用
在jenkins配置中,我有:
Name: Java6
JAVA_HOME/usr/lib/jvm/java-6-sun
Name: AntHome
ANT_HOME/usr/share/ant
Run Code Online (Sandbox Code Playgroud)
在工作配置:
git > repo
Build step-
Ant invoke
Ant Version: AntHome
Targets: -d
build file: folder/folder/build.xml
Run Code Online (Sandbox Code Playgroud)
当我建立工作时,它给了我这个错误
[folder] $ /usr/share/ant/bin/ant -file build.xml -d
/var/lib/jenkins/workspace/Project/folder/folder/build.xml:47: Execute failed: \
java.io.IOException: Cannot run program \
"/home/dims/android-sdk-linux_x86-1.0_r2/tools/aapt": \
java.io.IOException: error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)
我在命令行上也一样
jenkins@host:~/workspace/Project/folder/folder$/usr/share/ant/bin/ant -d
/var/lib/jenkins/workspace/Project/folder/folder/build.xml:47: Execute failed: \
java.io.IOException: Cannot run program \
"/home/dims/android-sdk-linux_x86-1.0_r2/tools/aapt": \
java.io.IOException: error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)
这个特定的项目正在发生,因为我创建了其他的和ant -d作品:例如
jenkins@host:~$ android create project -n template -t android-10 …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的值.最终我想用每个值运行一个查询,但是一旦我开始工作,我就可以想出来.
谢谢你的帮助.
我正在使用Ant,Java和CVSNT在控制台窗口中的命令行上工作.(Unix极客被迫生活在Windows世界中)
当我运行cvsnt命令时,批处理脚本不再起作用.这包括我使用的几个命令,包括ant和vim.
我可以打开一个新的控制台窗口,在那个窗口中,一切都很好,所以它必须是关于该控制台窗口中特定环境的东西,并且只要我在cvsnt中执行某些操作就会发生这种情况.
有任何想法吗?我应该找什么?
假设我在BASH或Kornshell中执行以下命令:
$ foo | while read line
> do
> echo "Line = '$line'"
> done
Run Code Online (Sandbox Code Playgroud)
如果我已经vi设置,并在Kornshell中编辑它,我得到:
foo | while read line
do
echo "Line = '$line'"
done
Run Code Online (Sandbox Code Playgroud)
如果我已经vi设置,并在BASH中编辑它,我得到:
foo | while read line;do; echo "Line = '$line'";done
Run Code Online (Sandbox Code Playgroud)
有没有办法在BASH中以与Kornshell相同的方式进行命令行编辑?
多年来,我注意到Perl脚本中的SQL查询存在一些问题:
假设我有以下表格:
PET PET_TYPE COLOR
======== ========== ============
PET_ID PET_TYPE COLOR_ID
Name Description Description
Owner
PET_TYPE
COLOR_ID
Run Code Online (Sandbox Code Playgroud)
而且,我想找到所有的红狗,我将不得不产生以下SQL查询.
FIND PET_ID, Name, Owner
FROM PET, PET_TYPE, COLOR
WHERE COLOR_ID.Description = 'RED'
AND PET_TYPE.Description = 'DOG'
AND PET.COLOR_ID = COLOR.COLOR_ID
AND PET.PET_TYPE = PET_TYPE.PET_TYPE
Run Code Online (Sandbox Code Playgroud)
我想要一个简化生成查询的Perl模块.允许我创建数据库连接的东西,然后预定义表的链接方式.完成后,所有开发人员必须做的是简化查询.
我想像这样的接口:
#
# Create a new Database Connection
#
my $db = Some:Module->new(\%options);
#
# Now describe how these tables relate to each other.
# It should be possible to reuse this information for
# …Run Code Online (Sandbox Code Playgroud) 我试图用来HTTP::Request::Common做一个URL的帖子.不幸的是,它似乎不适用于身份验证,我不得不切换回普通ol' HTTP::Request.如果我不需要身份验证,我可以通过这种方式完成所有事情:
use HTTP::Request::Common;
my $browser = LWP::UserAgent->new;
$browser->request (
POST $url,
Content => [
Name => $name,
Address => $address,
],
);
Run Code Online (Sandbox Code Playgroud)
不幸的是,由于身份验证,我不得不回到HTTP::Request:
use HTTP::Request;
my $browser = LWP::UserAgent->new;
my $request = HTTP::Request;
my $request->authentication_basic($user, $pass);
my $request->method("POST");
my $request->url($url);
# Create Content Byte String
my $uri = URI->new('http://'); #URL isn't needed, just the object
$uri->form_query(Name => $name, Address => $address);
my $content = $uri->query;
$request->content($content);
# Set the headers for the content
$request->header( …Run Code Online (Sandbox Code Playgroud) 我喜欢使用IO::File打开和读取文件而不是内置方式.
open my $fh, "<", $flle or die;
Run Code Online (Sandbox Code Playgroud)
use IO::File;
my $fh = IO::File->new( $file, "r" );
Run Code Online (Sandbox Code Playgroud)
但是,如果我将命令的输出视为我的文件怎么办?
内置open函数允许我这样做:
open my $cmd_fh, "-|", "zcat $file.gz" or die;
while ( my $line < $cmd_fh > ) {
chomp $line;
}
Run Code Online (Sandbox Code Playgroud)
什么相当于IO::File或IO::Handle?
顺便说一句,我知道可以做到这一点:
open my $cmd_fh, "-|", "zcat $file.gz" or die;
my $cmd_obj = IO::File-> new_from_fd( fileno( $cmd_fh ), 'r' );
Run Code Online (Sandbox Code Playgroud)
但是,IO::File如果已经存在文件句柄,为什么还要费心呢?
我们正在使用Eirslett Maven前端插件来帮助以标准方式构建我们的NPM项目。该前端为我们处理安装和其他问题。另外,它允许我们的开发人员mvn package像使用其他Java / Maven项目一样进行构建。
这是在具有代理警告的本地计算机上构建的,但不会在我们的Jenkins服务器上构建。
我已经$HOME/.npmrc配置无一不http_proxy和https_proxy环境变量设置。但是,我仍然收到没有设置代理的错误。
$ set | grep "http.?_proxy"
http_proxy=http://proxy.xxxx.local:3128
https_proxy=https://proxy.xxxx.local:3128
$ cat $HOME/.npmrc
registry = http://registry.npmjs.org/
proxy = http://proxy.xxxx.local:3128/
https-proxy = https://proxy.xxxx.local:3128/
strict = false
ca = null
$ mvn clean package
[...]
[INFO] --- frontend-maven-plugin:0.0.24:install-node-and-npm (install node and npm) @ ihcm-config-tool ---
[INFO] Installing node version v0.12.2
[INFO] Creating temporary directory /opt/tomcat/jenkins_home/jobs/ihcm-config-tool-trunk/workspace/node_tmp
[INFO] Downloading Node.js from \\
http://nodejs.org/dist/v0.12.2/node-v0.12.2-linux-x64.tar.gz \\
to /opt/tomcat/jenkins_home/jobs/ihcm-config-tool-trunk/workspace/node_tmp/node.tar.gz
[INFO] No proxy was …Run Code Online (Sandbox Code Playgroud)