小编Thi*_*Not的帖子

当我使用格式字符串"%FT%T"和Time :: Piece-> strptime时,为什么会出现"Error Parsing Time"?

我试图转换2015-09-11T04:00:00Time :: Piece对象.我试过了:

my $date = "2015-09-11T04:00:00";
my $t = Time::Piece->strptime($date, '%FT%T');
print $t->strftime('%F %T');
Run Code Online (Sandbox Code Playgroud)

但我明白了Error Parsing Time.我认为这是因为我正在寻找%FT%T并因为间距而导致问题.我该如何解决这个问题?

perl datetime

4
推荐指数
2
解决办法
1621
查看次数

如果数组的任何元素与另一个数组匹配,则打印数组哈希的键

我有一个像这样的数组:

my @arr = (5, 76, 1000, 21, 47);
Run Code Online (Sandbox Code Playgroud)

这个哈希:

my %hash = (
      Meta => [1000],
);
Run Code Online (Sandbox Code Playgroud)

如果散列的任何值与数组的任何元素匹配,我想打印该匹配的键值.为此,我使用以下函数,它的工作原理如下:

my ($match) = grep { "@{$hash{$_}}" ~~ @arr } keys %hash;
Run Code Online (Sandbox Code Playgroud)

当我在数组的散列中有多个元素时会出现问题,例如:

my %hash = (
      Meta => [1000, 2],
);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我还想返回键("Meta"),因为值1000在数组中,但我不明白.

perl

4
推荐指数
2
解决办法
116
查看次数

即使键不同,我如何获得两个词典共有的值?

从两个不同的词典开始:

dict_a = {'a': 1, 'b': 3, 'c': 4, 'd': 4, 'e': 6}
dict_b = {'d': 1, 'e': 6, 'a': 3, 'v': 7}
Run Code Online (Sandbox Code Playgroud)

即使它们有不同的键,我怎样才能得到共同的值?考虑到上面的词典,我希望得到这样的结果:

common = [1, 3, 6]
Run Code Online (Sandbox Code Playgroud)

python dictionary

4
推荐指数
1
解决办法
55
查看次数

为什么$ class-> SUPER :: new在使用多重继承时不调用所有父类的构造函数?

我试图在Perl中使用多继承,但我无法弄清楚如何从子构造函数调用多个父构造函数.

A.pm:

package A;
use Carp qw (croak);
use strict;
use warnings;

sub new {
    my $class = shift;
    print "This is A new\n";
    my $self->{DEV_TYPE} = shift || "A";
    bless($self, $class);
    return $self;
}

sub a_func{
    print "This is A func\n";
}

1;
Run Code Online (Sandbox Code Playgroud)

B.pm:

package B;
use Carp qw (croak);
use strict;
use warnings;

sub new {
    my $class = shift;
    print "This is B new\n";
    my $self->{DEV_TYPE} = shift || "B";
    bless($self, $class);
    return $self;
}

sub b_func{ …
Run Code Online (Sandbox Code Playgroud)

perl multiple-inheritance

4
推荐指数
1
解决办法
643
查看次数

使用awk更改与分隔符之间的模式匹配的行

我有一个像这样的输入文件:

some line
some other line
another line
start_delimiter
  interesting stuff
  more interesting stuff
  even more interesting stuff
end_delimiter
possibly more stuff
Run Code Online (Sandbox Code Playgroud)

我想操纵start_delimiter和end_delimiter之间与正则表达式匹配的行,并将结果写入输入文件.例如,将'//'添加到包含单词'more'的行的开头(只要这些行在分隔符之间):

some line
some other line
another line
start_delimiter
  interesting stuff
  //more interesting stuff
  //even more interesting stuff
end_delimiter
possibly more stuff
Run Code Online (Sandbox Code Playgroud)

我可以通过这种方式在分隔符之间获取文本部分:

awk '/start_delimiter/,/end_delimiter/' inputfile
Run Code Online (Sandbox Code Playgroud)

如果我把它管道到另一个awk我可以改变我感兴趣的行:

awk '/more/ {sub(/^/,"//")}1'
Run Code Online (Sandbox Code Playgroud)

我不确定的是如何返回并用新内容替换分隔部分.有任何想法吗?单线的奖励积分.

awk substitution delimiter

3
推荐指数
2
解决办法
4929
查看次数

如何中断exec并杀死子进程

我正在尝试在PHP CLI脚本中调用长时间运行的shell命令exec().但我不能为我的生活弄清楚如何中断PHP脚本并杀死衍生的子进程.好像我打电话exec(),我的信号处理程序被忽略了.以下代码正如我所期望的那样工作; 如果我将SIGTERM发送到进程,它会SIGTERM立即回复并退出.

<?php
  declare(ticks = 1);

  function sig_handler($signo) {
    switch ($signo) {
      case SIGTERM:
        echo 'SIGTERM' . PHP_EOL;
        flush();
        break;
      default:
    }
  }

  pcntl_signal(SIGTERM, 'sig_handler', false);

  sleep(60);
?>
Run Code Online (Sandbox Code Playgroud)

但是,如果我替换sleep(60);exec('sleep 60');,在睡眠结束之前我不会到达我的信号处理程序.我有两个问题:

  1. 如何获取信号exec(或shell_execproc_open)?
  2. 捕获信号后,如何杀死由此产生的任何子进程exec

php signals exec pcntl

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

如何显示当前日期和时间,包括微秒?

我需要在我的程序之一中以以下格式显示日期:

day - month - year "HH:MM:SS". <microseconds>
Run Code Online (Sandbox Code Playgroud)

我正在使用 Perl 5.8,我尝试使用纪元秒并将时间转换为微秒,如下所示:

my $epoch = time();
my $time1 = ($epoch - int($epoch)) *1e6
Run Code Online (Sandbox Code Playgroud)

但我得到这个输出:

25-05-2016 18:20:20.<incorrect number>
Run Code Online (Sandbox Code Playgroud)

perl datetime

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

如何解决警告"使用赋值给$ [已弃用"?

我有一个程序,我从较旧的计算机下载到较新的计算机.它有以下代码片段:

#!/bin/perl -w

use strict;

$[ = 1;    # set array base to 1
$, = ' ';    # set output field separator
$\ = "\n";    # set output record separator
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行该脚本时,我收到以下错误消息:

Use of assignment to $[ is deprecated at ./test.pl line 5.
Run Code Online (Sandbox Code Playgroud)

有关如何解决此问题的任何想法?

我使用的是以下版本的perl:

This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
Run Code Online (Sandbox Code Playgroud)

perl

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

如何将字符串中的文字转义序列转换为相应的字节?

我有一个UTF-8编码的字符串,它来自包含字符的其他地方\xc3\x85lesund(文字反斜杠,文字“ x”,文字“ c”等)。

打印它会输出以下内容:

\xc3\x85lesund
Run Code Online (Sandbox Code Playgroud)

我想将其转换为字节变量:

b'\xc3\x85lesund'
Run Code Online (Sandbox Code Playgroud)

为了能够编码:

'Ålesund'
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我正在使用python 3.4。

python encoding python-3.x

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

使用 Jest 模拟 React HOC 时出现“无效的钩子调用”

我正在使用react-speech-recognition在我的 React 应用程序中将语音转录为文本。react-speech-recognition 提供了SpeechRecognition高阶组件,它注入了额外的属性,比如browserSupportsSpeechRecognition被封装的组件。

我的 App 组件如下所示:

// src/App.js
import React, { useEffect } from 'react';
import SpeechRecognition from 'react-speech-recognition';

const App = ({ transcript, browserSupportsSpeechRecognition }) => {
    useEffect(() => {
        console.log(`transcript changed: ${transcript}`);
    }, [transcript]);

    if (! browserSupportsSpeechRecognition) {
        return <span className="error">Speech recognition not supported</span>;
    }

    return <span className="transcript">{transcript}</span>;
};

const options = {
    autoStart: false,
    continuous: false
};

export default SpeechRecognition(options)(App);
Run Code Online (Sandbox Code Playgroud)

我编写了一些测试来模拟支持语音识别的浏览器和不支持语音识别的浏览器:

// src/App.spec.js
import React from 'react';
import Enzyme, { …
Run Code Online (Sandbox Code Playgroud)

reactjs jestjs enzyme higher-order-components

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