Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在windows上用perl将历元转换为本地时间_Windows_Perl_Epoch - Fatal编程技术网

在windows上用perl将历元转换为本地时间

在windows上用perl将历元转换为本地时间,windows,perl,epoch,Windows,Perl,Epoch,我们正在尝试转换从以下代码接收的输出 电流输出为这种形式 testingwindows,1446727960,1446728560,kkulka11,testingwin testingwindows1,1446727160,141228560,kkulka11,testingwin testingwindows2,1446727120,1446728560,kkulka11,testingwin testingwindows3,1446727960,1446728560,kkulka11,te

我们正在尝试转换从以下代码接收的输出

电流输出为这种形式

testingwindows,1446727960,1446728560,kkulka11,testingwin
testingwindows1,1446727160,141228560,kkulka11,testingwin
testingwindows2,1446727120,1446728560,kkulka11,testingwin
testingwindows3,1446727960,1446728560,kkulka11,testingwin
所需的输出类似于

testingwindows from Fri Oct  3 13:51:05 2015 GMT to Mon Nov  9 13:51:05 2015 GMT by kkulka11 for testingwin.
testingwindows1 from Fri Oct 2 13:51:05 2015 GMT to Mon Nov  9 13:51:05 2015 GMT by kkulka11 for testingwin.
testingwindows2 from Fri Oct 2 13:51:05 2015 GMT to Mon Nov  9 13:51:05 2015 GMT by kkulka11 for testingwin.
testingwindows3 from Fri Oct 12 13:51:05 2015 GMT to Mon Nov  9 13:51:05 2015 GMT by kkulka11 for testingwin.
这是我当前的代码

if ( $COMMAND eq 'queryone' ) {
    my $msend_query = "$MCELL_HOME\\bin\\mquery";
    my @args_query = (
        $msend_query,
        "-q",
        "-c", "$MCELL_HOME\\etc\\mclient.conf",
        "-n", "$CS_BLACKOUT_CELL",
        "-d",
        "-f", "csv",
        "-a", "CS_EMB_GBF_BLACKOUTS" ,
        "-s", "blackout_host,start_timestamp,stop_timestamp,userid,reason",
        "-w", "blackout_host: == '${BLACKOUTHOST}'"
    );
    system(@args_query);
我们尝试使用
perl-pe的s/(\d{10})/gmtime($1)/e'但无法转换,因此会出现此错误

'o~}走吧⌂⌂T⌂x⌂w'未被识别为内部或外部命令, 可操作的程序或批处理文件

当我们将代码用作

if ( $COMMAND eq 'queryone' ) {
    my $msend_query = "$MCELL_HOME\\bin\\mquery";
    my $mqt = "$MCELL_HOME\\mqt.pl";
    my @args_query = (
        $msend_query,
        "-q",
        "-c", "$MCELL_HOME\\etc\\mclient.conf",
        "-n", "$CS_BLACKOUT_CELL",
        "-d",
        "-f", "csv",
        "-a", "CS_EMB_GBF_BLACKOUTS",
        "-s", "blackout_host,start_timestamp,stop_timestamp,userid,reason",
        "-w", "blackout_host: == '${BLACKOUTHOST}'"
    ) | $mqt;
    system(@args_query);
需要专家提供快速帮助和指导,以实现可读格式的输出

编辑:

根据Jacob注释更新了代码,但仍然没有收到所需的输出。请建议

if ( $COMMAND eq 'queryone' ) {
    my $msend_query = "$MCELL_HOME\\bin\\mquery";
    my @args_query = (
        $msend_query,
        "-q",
        "-c", "$MCELL_HOME\\etc\\mclient.conf",
        "-n", "$CS_BLACKOUT_CELL",
        "-d",
        "-f", "csv",
        "-a", "CS_EMB_GBF_BLACKOUTS" ,
        "-s", "blackout_host,start_timestamp,stop_timestamp,userid,reason",
        "-w", "blackout_host: == '${BLACKOUTHOST}'"
    );
    chomp;
    my @parts = split(/,/, system(@args_query));
    $parts[1] = localtime($parts[1]);
    $parts[2] = localtime($parts[2]);
    printf("%s from %s to %s by %s for %s\n", @parts);
}
输出:

M:\AbhayBackup\PerlKK>test.pl -q -h testingwin
testingwin
sub: testingwin
testingwin,1446727960,1446728560,kkulka11,testingwin
0 from Thu Jan  1 05:30:00 1970 to Thu Jan  1 05:30:00 1970 by  for
testingwindows from Thu Nov  5 05:52:40 2015 to Thu Nov  5 06:02:40 2015 by kkulka11 for testingwin
testingwindows1 from Thu Nov  5 05:39:20 2015 to Sun Jun 23 07:09:20 1974 by kkulka11 for testingwin
testingwindows2 from Thu Nov  5 05:38:40 2015 to Thu Nov  5 06:02:40 2015 by kkulka11 for testingwin
testingwindows3 from Thu Nov  5 05:52:40 2015 to Thu Nov  5 06:02:40 2015 by kkulka11 for testingwin

编辑:根据您对该问题的最新更新,我现在认为您正在尝试捕获命令的输出并对其进行处理。由于您没有提供答案,而且我不知道什么是
mquery
,您也没有对此进行解释,因此我向您提出以下猜测:

if ($COMMAND eq 'queryone') {
    my @lines = `$MCELL_HOME\\bin\\mquery -q -c $MCELL_HOME\\etc\\mclient.conf -n $CS_BLACKOUT_CELL -d -f csv -a CS_EMB_GBF_BLACKOUTS -s blackout_host,start_timestamp,stop_timestamp,userid,reason -w blackout_host: == '${BLACKOUTHOST}'`;

    for (@lines) {
        chomp;

        my @parts = split(/,/, $_);
        $parts[1] = localtime($parts[1]);
        $parts[2] = localtime($parts[2]);

        printf("%s from %s to %s by %s for %s\n", @parts);
    }       
}

…)|$多量子阱-您正在对命令字符串执行按位或运算。这毫无意义。“正确”怎么说?我不知道你的代码在那里做什么。首先,为什么要在其中放入逐位运算?我认为您不了解代码在做什么。然后,您要么没有正确复制和粘贴,要么输入的内容与您所说的不一样。您可以在我的答案中看到完整的输入和输出!您可能还希望在结帐时订购并选择隔夜交货。请求的输出是时区缩写too@ysth说得好。他在主题中还说了“本地时间”,然后在他的代码中使用了
gmtime()
,因此我真的不知道他想要什么。@Matt Jacob您的输出是正确的,我们也需要类似的方式,但不确定我们在哪里出错,所以它不会出现。嗯,我也不确定。也许你应该编辑你的问题以显示你在做什么。根据你的建议更新了问题,但仍然没有收到预期的结果
if ($COMMAND eq 'queryone') {
    my @lines = `$MCELL_HOME\\bin\\mquery -q -c $MCELL_HOME\\etc\\mclient.conf -n $CS_BLACKOUT_CELL -d -f csv -a CS_EMB_GBF_BLACKOUTS -s blackout_host,start_timestamp,stop_timestamp,userid,reason -w blackout_host: == '${BLACKOUTHOST}'`;

    for (@lines) {
        chomp;

        my @parts = split(/,/, $_);
        $parts[1] = localtime($parts[1]);
        $parts[2] = localtime($parts[2]);

        printf("%s from %s to %s by %s for %s\n", @parts);
    }       
}