小编dax*_*xim的帖子

为什么拆分`|`(管道)不按预期工作?

我有一个我要拆分的字符串.但是分隔符是在运行时确定的,因此我需要将其作为变量传递.

有点像my @fields = split(/$delimiter/,$string);不起作用.有什么想法吗?


输入:

abcd|efgh|23
Run Code Online (Sandbox Code Playgroud)

预期产出:

abcd
efgh
23
Run Code Online (Sandbox Code Playgroud)

variables perl split separator

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

如何在Perl中输出文本表?

我想输出一个包含四个变量的表,所需格式的示例是:

A confusion matrix

H        |    P     |
-----------------------
$var1    |   $var2  | H
$var3    |   $var4  | P
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,根据变量中的位数,格式会发生变化,各行都会偏移.我知道这是一个完整的noobie问题,但我从来没有过多地关注输出的格式,这只是我想要正确的一件小事.任何帮助都会很棒,谢谢.

printing formatting perl

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

你如何降级一个大人物?

perl -Mbigrat -E'for (1..100) { $i += 1/3; say int($i), "\t", sprintf "%.55f", $i }'
Run Code Online (Sandbox Code Playgroud)

发出很多警告:

Argument "100/3" isn't numeric in addition (+) at …/site_perl/5.24.1/Math/BigRat.pm line 1939.
Run Code Online (Sandbox Code Playgroud)

在没有-Mbigrat的情况下再次运行以查看sprintf的预期效果.

你如何将BigRat实例$ i降级为一个普通的NV,可以选择sprintf?

版本:

  • bigrat 0.47
  • 数学:: BigRat 0.2612

perl bignum

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

使用赋值运算符时“方法'ASSIGN-KEY'的调用者必须是对象实例”

使用键入的键进行哈希...

use v6;
class Foo {}
my Hash[Foo, Foo] $MAP;

my $f1 = Foo.new;
my $f2 = Foo.new;

$MAP{$f1} = $f2;
Run Code Online (Sandbox Code Playgroud)

产生错误:

方法“ASSIGN-KEY”的调用者必须是“Hash[Foo,Foo]”类型的对象实例,而不是“Hash[Foo,Foo]”类型的类型对象。你忘记了'.new'吗?

我觉得它具有误导性;真正的错误是什么,我必须写什么?

我已经尝试过%哈希变量的符号,这也不起作用。

raku

10
推荐指数
2
解决办法
223
查看次数

API包装器架构最佳实践

我正在围绕REST Web服务编写一个Perl包装器模块,我希望能够就如何最好地构建模块提供一些建议.

我一直在寻找几个不同的Perl模块以获得灵感.

Flickr::Simple2基本上是一个大文件,其中的方法包含Flickr API中的不同方法,例如getPhotos()等.

Flickr::API是用于发出HTTP请求的另一个模块(LWP)的子类.因此,基本上它只允许您使用LWP通过模块进行调用,该模块转到正确的API方法/ URL,而无需自己定义任何包装器方法.这解释得很差 - 但基本上它有一个方法,它接受一个参数(一个API方法名称)并构造正确的API调用,例如request()/ response().

替代设计将类似于第一次描述,但不那么单一,具有用于API的单独"区域"的单独类.

我想遵循现代/最佳实践Perl方法,所以我Dist::Zilla用来构建模块和MooseOO的东西,但我很欣赏一些关于如何实际设计/构建我的包装器的输入.

指南/教程或指向其他精心设计的模块的指南将不胜感激.

干杯

api perl web-services

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

gojûon整理有没有比kakasi图书馆更好的东西?

"更好"主要意味着准确性,但我也对其他系统擅长的任何其他标准感兴趣.我Text::Kakasi以一种公认有限的方式对Perl绑定进行了正确的采样,它可以很好地满足我们的需求.

use utf8;
use Encode;
use Text::Kakasi;
use Unicode::Collate;

my $k = Text::Kakasi->new(qw(-iutf8 -outf8 -JH));
my $c = Unicode::Collate->new;

print encode_utf8 $_ for
    map  { $_->[0] }
    sort { $c->cmp($a->[1], $b->[1]) }
    map  { [$_, $k->get($_)] }
    <DATA>;

__DATA__
???????
????????
?????
??
????????
??
???????
??
??
Run Code Online (Sandbox Code Playgroud)

unicode perl collation cjk

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

获取Perl中两个字符串列表的交集

在第4章第4.8节(计算联盟,交集或唯一列表的差异)中,Perl Cookbook提供了这种技术来获取两个整数列表的交集:

@a = (1, 3, 5, 6, 7, 8);
@b = (2, 3, 5, 7, 9);
...
foreach $e (@a, @b) {
    $union{$e}++ && $isect{$e}++
}
@union = keys %union;
@isect = keys %isect;
Run Code Online (Sandbox Code Playgroud)

我想要为两个字符串列表完成(不区分大小写).请问有效的方法吗?

perl

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

在Perl中,@ array [1]和$ array [1]之间有什么区别?

我一直在研究阵列切片,坦率地说,没有看到选择@array[1]和之间的区别$array[1].有区别吗?

#!/usr/bin/perl 
@array = (1,3);
print "\nPrinting out full array..\@array\n";
print "@array\n";
print "\n";
print "Printing out \@array[1]\n";
print "@array[1]\n";
print "Printing out \$array[1]\n";
print "$array[1]\n";
print "\n\n";
Run Code Online (Sandbox Code Playgroud)

arrays perl

8
推荐指数
2
解决办法
763
查看次数

对聚合中包含的列表感到困惑,也许是上下文问题?

乐堂版本 2020.01

我正在编写一些一次性代码,并没有费心去实现一个类,只是使用了一个 Hash 作为工作方式。我在列表中发现了一些令人惊讶的行为。

class Q1 {}
class R1 {
    has Str $.some-str is required;
    has @.some-list is required;
}

my $r1 = R1.new(
    some-str => '…',
    some-list => (Q1.new, Q1.new, Q1.new)
);

# hash as poor man's class
my $r2 = {
    some-str => '…',
    some-list => (Q1.new, Q1.new, Q1.new)
};

multi sub frob(R1 $r1) {
    for #`(Array) $r1.some-list -> $elem {
        $elem.raku.say;
    }
}

multi sub frob(Hash $r2) {
    for #`(List) $r2<some-list> -> $elem {
        $elem.raku.say;
    } …
Run Code Online (Sandbox Code Playgroud)

raku

8
推荐指数
3
解决办法
118
查看次数

如何评估字符串中的shell变量?

在我的Perl脚本中,我获得了可能包含环境变量的文件路径字符串,例如$FONTS/test.ttf$TMP/file.txt.

我现在想要打开这样的文件:

open my $handle, "<$filename" or die $!;
Run Code Online (Sandbox Code Playgroud)

我现在如何在打开调用之前扩展环境变量,例如bash shell会做什么?

perl

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