小编Dav*_* W.的帖子

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
查看次数

关于现有perl子例程的三个问题

我试图使用以下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代表什么?

perl

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

Jenkins执行失败:java.io.IOException ant build

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

java ant android hudson jenkins

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

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万
查看次数

批处理脚本不再有效?

我正在使用Ant,Java和CVSNT在控制台窗口中的命令行上工作.(Unix极客被迫生活在Windows世界中)

当我运行cvsnt命令时,批处理脚本不再起作用.这包括我使用的几个命令,包括antvim.

我可以打开一个新的控制台窗口,在那个窗口中,一切都很好,所以它必须是关于该控制台窗口中特定环境的东西,并且只要我在cvsnt中执行某些操作就会发生这种情况.

有任何想法吗?我应该找什么?

windows console cvsnt batch-file

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

BASH:像Kornshell一样编辑历史记录

假设我在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相同的方式进行命令行编辑?

bash

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

用于简化SQL查询的Perl模块

多年来,我注意到Perl脚本中的SQL查询存在一些问题:

  • 他们很难读
  • 大多数开发人员对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)

sql-server perl dbi

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

Perl:使用HTTP :: Request :: Common发布身份验证

我试图用来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)

perl httprequest lwp

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

Perl在不读取实际文件时使用`IO :: Handle`或`IO :: File`

我喜欢使用IO::File打开和读取文件而不是内置方式.

建在路上

 open my $fh, "<", $flle or die;
Run Code Online (Sandbox Code Playgroud)

IO ::文件

 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::FileIO::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如果已经存在文件句柄,为什么还要费心呢?

perl file-io

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

NPM前端代理集,但无法下载NPM软件包

我们正在使用Eirslett Maven前端插件来帮助以标准方式构建我们的NPM项目。该前端为我们处理安装和其他问题。另外,它允许我们的开发人员mvn package像使用其他Java / Maven项目一样进行构建。

这是在具有代理警告的本地计算机上构建的,但不会在我们的Jenkins服务器上构建。

我已经$HOME/.npmrc配置无一不http_proxyhttps_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)

proxy node.js jenkins

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

标签 统计

perl ×6

dbi ×2

jenkins ×2

android ×1

ant ×1

bash ×1

batch-file ×1

console ×1

cvsnt ×1

file-io ×1

httprequest ×1

hudson ×1

java ×1

lwp ×1

node.js ×1

proxy ×1

sql-server ×1

windows ×1