小编Сух*_*й27的帖子

范围算子; 翻转,但防止翻牌,并立即翻转

perl -wle 'print join " ", grep /3/ .. undef(), 1..10'
Run Code Online (Sandbox Code Playgroud)

输出 3 4 5 6 7 8 9 10

Q1:有没有比undef防止翻牌更好的方法?

Q2:如何强制范围运算符的左侧部分无条件true(即.true .. /7/)?

更新:

perl -wE 'say join " ", grep { ((/7/ .. undef)||1) ==1 } 1..10'
Run Code Online (Sandbox Code Playgroud)

可以用作true .. /7/替代品.

perl

6
推荐指数
1
解决办法
128
查看次数

两个或多个有序集的交集

我有两个有序的集合,并且想要交叉,即. (age BETWEEN 25, 35) AND (salary BETWEEN 250, 350)

是否有更好的方法来提高效率:

ZUNIONSTORE t_age 1 age WEIGHTS 1
ZREMRANGEBYSCORE t_age -inf (25
ZREMRANGEBYSCORE t_age (35 +inf
ZINTERSTORE result 2 salary t_age WEIGHTS 1 0
ZRANGEBYSCORE result 250 350
Run Code Online (Sandbox Code Playgroud)

set nosql redis

6
推荐指数
1
解决办法
1910
查看次数

为什么websocket连接中断

在我对websocket echo服务器运行客户端后,它会在大约半分钟后与WebSocket closed with status 1006消息断开连接.

请建议如何避免此类行为(浏览器客户端似乎没有受到影响)

use 5.20.0;
use Mojo::UserAgent;
use Mojo::IOLoop;

sub ws_connect {

  state $ua;

  say "Connecting..";
  $ua = Mojo::UserAgent->new;
  $ua->websocket('ws://127.0.0.1:3000/echo' => \&onConnect);

}

sub onConnect {
  my ($ua, $tx) = @_;

  if (!$tx->is_websocket) {
        say 'WebSocket handshake failed!';
  }
  say "Connected!";

  $tx->on(finish => sub {
        my ($tx, $code) = @_;
        say "WebSocket closed with status $code";
  });

}

ws_connect();
Mojo::IOLoop->start;
Run Code Online (Sandbox Code Playgroud)

回声服务器

use Mojolicious::Lite;
use Mojo::EventEmitter;

helper events => sub { state $events = Mojo::EventEmitter->new …
Run Code Online (Sandbox Code Playgroud)

perl websocket mojolicious

6
推荐指数
1
解决办法
685
查看次数

独特元素存储的数据结构

我正在寻找一个最好应该执行相等O(1)的数据结构?添加/删除/检索元素时的任意数量的元素.

以下是一些其他指南,

  • 检索元素不应该涉及缓慢 keys()
  • 元素必须始终是唯一的和定义的
  • 元素顺序不重要
  • 添加或删除元素不应涉及对其他元素的迭代
  • 检索到的元素列表中的间隙是可以容忍的,并且可以用undef值表示

请建议更好的解决方案,

sub uniqArrayFactory {
  my $members = [];
  my $seen = {};
  my $gaps = [];

  return sub {
    my (%arg) = @_;

    return $members if $arg{members};
    my $m;
    if (defined ($m = $arg{del})) {

      return if !$seen->{$m};
      ${ $seen->{$m} } = undef;
      push @$gaps, delete($seen->{$m});
    }
    elsif (defined ($m = $arg{add})) {

      return if $seen->{$m};
      if (@$gaps) {
        $seen->{$m} = pop @$gaps;
        ${ $seen->{$m} } = $m;
      }
      else …
Run Code Online (Sandbox Code Playgroud)

perl list unique xs

6
推荐指数
1
解决办法
333
查看次数

标量与列表上下文

想知道在两种情况下do {}返回列表时,遵循两个示例给出不同结果的原因是什么.

perl -wE 'say my $r = do {  (44); }'
44

perl -wE 'say my $r = do {  my ($x) = map $_, 44; }'
1
Run Code Online (Sandbox Code Playgroud)

perl

6
推荐指数
2
解决办法
132
查看次数

如何从今天开始计算一周前的日期

我想用一种特定的格式从一天前开始计算一周前的日期并将其放入变量中.例如,今天是Nov 21st. 2014,我想打印出来:上周是2014-11-14.

我知道我们可以使用Date::Calc模块,但我不知道如何.

perl

5
推荐指数
1
解决办法
3070
查看次数

Perl 字符串操作和 utf8/unicode

我认为这将是一个简单的 Web 表单,直到人们开始从维基百科复制包含 utf8 字符的文本字符串并将其粘贴到输入字段中。我的 perl CGI 脚本打开 MySQL DB 连接并设置

\n\n
$DBH->{mysql_enable_utf8} = 1;\n$DBH->do("set names \'utf8\';");\n
Run Code Online (Sandbox Code Playgroud)\n\n

我正在尝试使用该Encode模块来解码、使用和编码目标输入值,但这并没有按我的预期工作。网页设置为utf8字符集。

\n\n

在这种情况下,我的目标字符串是Baden-W\xc3\xbcrttemberg[从列出德国城镇名称的维基百科页面复制]。发送请求时,我可以看到目标字符串为:Baden-W%C3%BCrttemberg。但这并没有很好地通过我的 CGI 脚本。

\n\n

我有以下示例脚本:

\n\n
#!/usr/local/bin/perl -w\n\nuse strict;\nselect(STDOUT);\n$|++;\n\nuse feature \'unicode_strings\';\nuse Encode;\nuse utf8;\n\nbinmode STDOUT, ":utf8";\n\nmy $thing = "Baden-W\xc3\xbcrttemberg";\nprint STDOUT "$thing\\n";\n\nmy $decodedThing = decode_utf8($thing);\nprint STDOUT encode_utf8($decodedThing) . "\\n";\n
Run Code Online (Sandbox Code Playgroud)\n\n

该值$thing有一个“u”,在“-W”后面有一个元音变音。

\n\n

当我运行脚本时,我得到:

\n\n
# ./test.pl\nMalformed UTF-8 character (unexpected non-continuation byte 0x72, immediately after start byte 0xfc) at ./test.pl line 13.\nBaden-Wrttemberg\nBaden-Wrttemberg\n
Run Code Online (Sandbox Code Playgroud)\n\n

u 变音符号去哪儿了?我该如何取回它? …

mysql perl utf-8

5
推荐指数
1
解决办法
1734
查看次数

显示不包含特定字符串linux的行

我的服务器linux中有一个带有这个字符的文本文件;

  ID              DATA
MF00034657,12435464^DRogan^DPUM-DT_MAX_1234;PUM-DT_MAX_1234;PUM-DT_MAX_1234;PUM-DT_MAX_1234;PUM-DT_MAX_1234;M-DT_MAX_1;
MF00056578,12435464^DRogan^DPUM-DT_MAX_1234;PUM-DT_MAX_1234;PUM-DT_MAX_1234;PUM-DT_MAX_1234;PUM-DT_MAX_1234;UM-DT_MAX_123;
Run Code Online (Sandbox Code Playgroud)

现在我需要过滤不包含"PUM-DT_MAX_1234"的行并保存在带有ID的另一个文件中

像这样

MF00034657,M-DT_MAX_1
MF00056578,UM-DT_MAX_123
Run Code Online (Sandbox Code Playgroud)

我用

grep -v 'PUM-DT_MAX_1234' file > file.out
awk '!/PUM-DT_MAX_1234/' file > file.out
Run Code Online (Sandbox Code Playgroud)

但是不行

有什么建议

谢谢!

linux awk grep sed

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

Alpine linux,制作自定义 ISO 映像

尝试通过以下方式构建救援 iso

https://wiki.alpinelinux.org/wiki/How_to_make_a_custom_ISO_image

alpine-extended-3.4.3-x86.iso之前安装到硬盘上使用)

当启动新创建的映像时,它会在启动提示后立即抱怨。我应该怎么做才能创建正确的 ISO 映像?

开机画面

linux alpine-linux

5
推荐指数
1
解决办法
2465
查看次数

如何在perl脚本中替换变量选项

在perl文本中,替换非常简单和强大.我想做一个带有变量替换的脚本,例如:

if ( $IgnoreCase ) {$opt = "gi"} else {$opt = "g"}

$string =~ s/$source/$replace/$opt;
Run Code Online (Sandbox Code Playgroud)

结果是:

Scalar找到了运营商的预期......

是否有可能做选项变量?

perl replace

5
推荐指数
2
解决办法
148
查看次数

标签 统计

perl ×7

linux ×2

alpine-linux ×1

awk ×1

grep ×1

list ×1

mojolicious ×1

mysql ×1

nosql ×1

redis ×1

replace ×1

sed ×1

set ×1

unique ×1

utf-8 ×1

websocket ×1

xs ×1