小编Chr*_*oms的帖子

ShipIt vs Dist :: Zilla的优点/缺点是什么?

几个月前我开始使用Dist :: Zilla.但是,在YAPC :: NA,有人提到他们使用的是ShipIt.那么今天我在github的 miyagawa的cpanminus目录中注意到了一个.shipit文件,所以我决定再研究一下......

我最初的印象是ShipIt有一个Dist :: Zilla可用的子集,但我不想妄下结论.那么,对于那些对两者都有过经验的人来说,ShipIt vs Dist :: Zilla的优点/缺点是什么?

在perlmonks交叉

perl software-distribution dist-zilla

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

初学者有简单易用的BASIC吗?(VB 2.0发生了什么?)

我的儿子问是否有一种简单的语言可以接受并做一些基础编程.起初我想过QuickBasic,但后来认为我应该向他展示VB.我下载了Visual Basic Express 2008,但我完全迷失了.对象工具栏在哪里?表格在哪里?属性窗格在哪里?

相反,它是商业智能和分析服务.简单的初学者的万能符号指令代码在哪里?

basic

9
推荐指数
9
解决办法
2322
查看次数

通过perl解析用JSON编码的数组

我正在使用以下Perl代码使用该JSON模块解析JSON中的数组.但返回的数组长度为1,我无法正确迭代它.所以问题是我无法使用返回的数组.

#!/usr/bin/perl
use strict;

my $json_text = '[ {"name" : "abc", "text" : "text1"}, {"name" : "xyz", "text" : "text2"} ]';

use JSON;
use Data::Dumper::Names;

my @decoded_json = decode_json($json_text);
print Dumper(@decoded_json), length(@decoded_json), "\n";
Run Code Online (Sandbox Code Playgroud)

输出来了:

$VAR1 = [
     {
        'text' => 'text1',
        'name' => 'abc'
      },
      {
        'text' => 'text2',
        'name' => 'xyz'
      }
    ];
1
Run Code Online (Sandbox Code Playgroud)

perl json

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

Perl中文件的行号

awk如果我给一个以上的文件作为参数awk,还有两个特殊的变量:

NR=与所有文件中的所有行对应的行号.

FNR=当前文件的行号.

我知道在Perl中,$.对应于NR(所有文件中的行之间的当前行).

FNR在Perl中有没有可与AWK 相媲美的东西?

假设我有一些命令行:

perl -pe 'print filename,<something special which hold the current file's line number>'  *.txt
Run Code Online (Sandbox Code Playgroud)

这应该给我输出像:

file1.txt 1
file1.txt 2
file2.txt 1
Run Code Online (Sandbox Code Playgroud)

perl

9
推荐指数
2
解决办法
7538
查看次数

如何从 SLURM 获取详细的作业运行信息(例如,像 LSF 为“标准输出”生成的那样)?

bsub与 LSF 一起使用时,该-o选项提供了许多详细信息,例如作业何时开始和结束以及作业占用了多少内存和 CPU 时间。使用 SLURM,我得到的只是在没有 LSF 的情况下运行脚本时得到的相同标准输出。

例如,给定这个 Perl 6 脚本:

warn  "standard error stream";
say  "standard output stream";
Run Code Online (Sandbox Code Playgroud)

提交如下:

sbatch -o test.o%j -e test.e%j -J test_warn --wrap 'perl6 test.p6'
Run Code Online (Sandbox Code Playgroud)

结果在文件中test.o34380

Testing standard output
Run Code Online (Sandbox Code Playgroud)

和文件test.e34380

Testing standard Error  in block <unit> at test.p6:2
Run Code Online (Sandbox Code Playgroud)


使用 LSF,我会在标准输出文件中获得各种详细信息,例如:

Sender: LSF System <lsfadmin@my_node>
Subject: Job 347511: <test> Done

Job <test> was submitted from host <my_cluster> by user <username> in cluster <my_cluster_act>.
Job was executed on host(s) …
Run Code Online (Sandbox Code Playgroud)

lsf slurm

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

Perl6安装模块

Perl6 Rakudo发行版中是否有任何命令列出了系统中所有已安装的模块?

我尝试了以下命令:

 p6doc NativeCall
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

===SORRY!===
Cannot invoke this object (REPR: Uninstantiable)
Run Code Online (Sandbox Code Playgroud)

但是当我写一个包含以下内容的p6文件时:

use  NativeCall;
Run Code Online (Sandbox Code Playgroud)

它编译没有问题.

如何浏览这样的Perl 6模块(如perl 5的perldoc)以及如何列出所有已安装的Perl 6模块?

perl6

9
推荐指数
2
解决办法
363
查看次数

为什么不和//和m //完全同义?

从下面的例子中,我看到/ /并且m/ /不完全是同义词,与我的预期相反.我认为唯一的理由使用m/ /,而不是/ /是,它允许使用不同的分隔符(如m{ }).为什么他们不同,为什么我要使用一个与另一个?

我在目录中搜索CSV文件.起初我搜索了以文件结尾的文件csv(所有代码显示为从Perl 6 REPL中看到的):

> my @csv_files = dir( test => / csv $ /  );
["SampleSheet.csv".IO]
Run Code Online (Sandbox Code Playgroud)

但最近出现了一个文件Csv.所以我尝试不区分大小写:

> my @csv_files = dir( test => m:i/ csv $ / );
Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
  in block <unit> at <unknown file> …
Run Code Online (Sandbox Code Playgroud)

regex perl6

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

我怎样才能惯用地忽略未定义的数组元素(或者首先避免将它们分配给数组)?

如果为数组分配未定义的值,它将包含该未定义的值,如果您不想迭代未定义的值,则会使用循环复杂化:

my @bar = 1, 2, Any;

for @bar -> $baz {
    put $baz;
}
Run Code Online (Sandbox Code Playgroud)

这给出了以下输出,包括对未定义值的警告:

1
2
Use of uninitialized value $baz of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
  in block  at for.p6 line 4
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过多种方式明确地处理这个问题,例如:

for @bar -> $baz {
    next unless $baz; # Skip this iteration
    put $baz;
}

for @bar.grep: *.defined {    # Just iterate over the defined values
    put $baz;
} …
Run Code Online (Sandbox Code Playgroud)

perl6 raku

9
推荐指数
2
解决办法
314
查看次数

为什么我的Promise(起始块)中的所有Shell进程都不运行?(这是一个错误吗?)

我想运行多个Shell进程,但是当我尝试运行63个以上的进程时,它们将挂起。当我max_threads将线程池减少n为时,运行nth shell命令后它将挂起。

正如您在下面的代码中看到的那样,问题不在于start块本身,而是在start包含shell命令的块中:

#!/bin/env perl6
my $*SCHEDULER = ThreadPoolScheduler.new( max_threads => 2 );

my @processes;

# The Promises generated by this loop work as expected when awaited
for @*ARGS -> $item {
    @processes.append(
        start { say "Planning on processing $item" }
    );
}

# The nth Promise generated by the following loop hangs when awaited (where n = max_thread)
for @*ARGS -> $item {
    @processes.append(
        start { shell …
Run Code Online (Sandbox Code Playgroud)

perl6 raku

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

在第一个“once {next}”块之后,其他相同范围的“once”块无法执行

我最初的计划是使用两个once {next}块来跳过文件中的前两行(此处将 a 模拟为多行字符串):

for "A\nB\nC\n".lines() -> $line {
    once {next}
    once {next}
    put $line;
}
Run Code Online (Sandbox Code Playgroud)

但它只跳过了一次迭代而不是两次,输出如下:

B
C
Run Code Online (Sandbox Code Playgroud)

而不是我所期望的:

C
Run Code Online (Sandbox Code Playgroud)

显然,单个once {next}以某种方式取消once了同一范围内的所有剩余块:

my $guard = 3;

loop {
    last if $guard-- <= 0;
    once { next };
    once { put 'A: once ' };
    once { put 'A: once again' };
    put 'A: many ';
}

$guard = 3;
loop {
    last if $guard-- <= 0;
    once { put 'B: once ' }; …
Run Code Online (Sandbox Code Playgroud)

raku

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

标签 统计

perl6 ×4

perl ×3

raku ×3

basic ×1

dist-zilla ×1

json ×1

lsf ×1

regex ×1

slurm ×1

software-distribution ×1