#!/usr/bin/env perl
use warnings;
use 5.12.2;
my $c = 'f'; # could be a number too
if ( $c eq 'd' || $c == 9 ) {
say "Hello, world!";
}
Run Code Online (Sandbox Code Playgroud)
什么是最好的方法,避免'参数'f"在./perl.pl第7行的数字eq(==)中不是数字.' - 警告?
我想在这种情况下我可以使用"eq"两次,但这看起来不太好.
我怎么能抓住"Unicode非字符0xffff是非法的交换" - 警告?
#!/usr/bin/env perl
use warnings;
use 5.012;
use Try::Tiny;
use warnings FATAL => qw(all);
my $character;
try {
$character = "\x{ffff}";
} catch {
die "---------- caught error ----------\n";
};
say "something";
Run Code Online (Sandbox Code Playgroud)
输出:
# Unicode non-character 0xffff is illegal for interchange at ./perl1.pl line 11.
Run Code Online (Sandbox Code Playgroud) 如果我有use许多模块的Perl代码,是否有一种快速简便的方法来确定这些模块是否不是纯粹的Perl模块?
检查SQLite表是否超过100,000行的最快方法是什么?
测试表有26列和200,000,000行.
SELECT COUNT(*) FROM ( SELECT * FROM table LIMIT 100001 )
Run Code Online (Sandbox Code Playgroud)
花了0.27秒.
以下三个需要12分半钟
SELECT COUNT(*) FROM table
SELECT COUNT(*) FROM table LIMIT 100001
SELECT CASE WHEN COUNT(Id) >= 100000 THEN 1 ELSE 0 END FROM table
Run Code Online (Sandbox Code Playgroud) 还包括Perl 6拥有的东西等同的Unicode :: GCString的columns方法是什么?
Perl 5示例:
#!/usr/bin/env perl
use warnings;
use strict;
use 5.10.0;
use utf8;
use open qw( :std :utf8 );
use Unicode::GCString;
my $s = '?'; # U+5408
say length $s; # 1
my $gcs = Unicode::GCString->new( $s );
say $gcs->columns; # 2
Run Code Online (Sandbox Code Playgroud) 我正在使用Perl 6模块Term :: termios.
#!/usr/bin/env perl6
use v6;
use Term::termios;
my $saved_termios := Term::termios.new(fd => 1).getattr;
my $termios := Term::termios.new(fd => 1).getattr;
$termios.makeraw;
$termios.setattr(:DRAIN);
loop {
my $c = $*IN.getc;
print "got: " ~ $c.ord ~ "\r\n";
last if $c eq 'q';
}
$saved_termios.setattr(:DRAIN);
Run Code Online (Sandbox Code Playgroud)
当我运行此脚本,按键up-arrow,down-arrow,right-arrow,left-arrow和q这是输出:
#after arrow-up:
got: 27
got: 91
#after arrow-down:
got: 65
got: 27
got: 91
#after arrow-right:
got: 66
got: 27
got: 91
#after …Run Code Online (Sandbox Code Playgroud) 当我将数组推送到一个有一个数组作为唯一元素的数组数组时,为什么会得到这种数据结构呢?
use v6;
my @d = ( [ 1 .. 3 ] );
@d.push( [ 4 .. 6 ] );
@d.push( [ 7 .. 9 ] );
for @d -> $r {
say "$r[]";
}
# 1
# 2
# 3
# 4 5 6
# 7 8 9
say @d.perl;
# [1, 2, 3, [4, 5, 6], [7, 8, 9]]
Run Code Online (Sandbox Code Playgroud) 返回的值的顺序是否await始终相对于输入顺序?
my @aoa = (
qw<1 a>, qw<2 b>, qw<3 c>,
qw<4 d>, qw<5 e>, qw<6 f>,
qw<7 g>, qw<8 h>, qw<9 i>,
);
my @portions = ( ( 0, 2 ), ( 3, 5 ), ( 6, 8 ) );
my @promise;
for @portions -> $range {
@promise.push: start {
do for $range[0] .. $range[1] -> $row {
do for ^@aoa.[$row] -> $col {
my $str = @aoa[$row][$col] // '';
$row, $col, $str;
}
}
};
} …Run Code Online (Sandbox Code Playgroud) 是否可以将pod代码转换为保存在变量中的方式,使其$=pod与pod2text一起使用时的行为类似于?
#!/usr/bin/env perl6
use v6;
use Pod::To::Text;
my $code = $*PROGRAM.slurp;
my $pod = $code.subst( / ^ .+ \n <?before '=begin pod'> /, '' );
# convert $pod so it works with pod2text like $=pod does
say pod2text $pod;
say "==============";
say pod2text $=pod;
=begin pod
=head1 NAME
Test pod
=head1 DESCRIPTION
This is a test.
=end pod
Run Code Online (Sandbox Code Playgroud) sub a { my @c = 1, 2, 3, 4; return @c };
sub b { my $d = [ 1, 2, 3, 4 ]; return $d };
say a().WHAT; # (Array)
say b().WHAT; # (Array)
my @e = a();
my @f = b();
say @e; # [1 2 3 4]
say @e[1]; # 2
say @f; # [[1 2 3 4]]
say @f[1]; # (Any)
# valid raku code, no errors messages
Run Code Online (Sandbox Code Playgroud)
这些子例程都返回一个数组,但返回的数组行为不同。在文档中明确子例程返回哪种数组类型的正确表达式是什么?
sub b ( --> Array ) …Run Code Online (Sandbox Code Playgroud)