小编chr*_*lck的帖子

用于Perl的NYTProf Profiler

这个问题是关于Devel::NYTProf探查者的.

我从分析器接收到的简单行的输出,例如:

use strict;
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

statements: 3 
Time on Line: 22µs
Calls: 2
Time in Sub: 12µs
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  1. 这3个陈述怎么样?
  2. 子时间..这代表什么?
  3. 这是否代表将此模块转换为optree所花费的时间,还是其他内容?
  4. 这是编译阶段时间还是运行阶段时间?

先感谢您

perl devel-nytprof

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

Nodejs 和 kotlin 中的 SHA256 不同哈希

我在两个不同的模块中使用 SHA 256 哈希生成器。一个模块是用 Kotlin 编写的,另一个模块使用 Nodejs 加密 API 编写。Nodejs 和 kotlin 中的哈希值略有不同。

Kotlin 代码

import java.security.MessageDigest
import java.util.Base64
fun main() {
        val md = MessageDigest.getInstance("SHA-256")
        val input = "test".toByteArray(Charsets.UTF_8)
        val bytes = md.digest(input)
        println(Base64.getUrlEncoder().encodeToString(bytes))
}
Run Code Online (Sandbox Code Playgroud)

Nodejs代码

const crypto = require('crypto');
const hash = crypto.createHash('sha256');

hash.update('test');
console.log(crypto.createHash('sha256').update('test', 'utf8').digest('base64'));
Run Code Online (Sandbox Code Playgroud)

kotlin 代码输出n4bQgYhMfWWaL-qgxVrQFaO_TxsrC4Is0V1sFbDwCgg=where ,而 Nodejs 代码输出n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=。我无法确定我做错了什么?

java sha256 node.js kotlin

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

在Perl中解析Apache日志

更新5-10-2013

好的,现在我可以毫无问题地过滤掉IP地址了。现在来我想做的接下来的三件事,我认为可以轻松完成sort($keys),但是我错了,然后尝试使用下面稍微复杂一点的方法也不是解决方案。我需要完成的下一件事是收集日期和浏览器版本。我将提供一个示例,说明我的日志文件和当前代码的格式。

预约日志

24.235.131.196 - - [10/Mar/2004:00:57:48 -0500] "GET http://www.google.com/iframe.php HTTP/1.0" 500 414 "http://www.google.com/iframe.php" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"
Run Code Online (Sandbox Code Playgroud)

我的密码

#!usr/bin/perl -w
use strict;

my %seen = ();
open(FILE, "< access_log") or die "unable to open file  $!";    

while( my $line = <FILE>) {
    chomp $line;

    # regex for ip address.
    if( $line =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/ ) {  
        $seen{$1}++;
    }

    #regex for date an example is [09\Mar\2009:05:30:23]
    if( $line =~ /\[[\d]{2}\\.*[\d]{4}\:[\d]{2}\:[\d]{2}\]*/) {
        print "\n\n $line matched : $_\n"; …
Run Code Online (Sandbox Code Playgroud)

apache string perl logging parsing

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

perl的$ ^ I的任何文档?

我已经$^I在perl脚本中用于有条件地搜索和替换.我想知道是否$^I在缓冲区中复制文件并在处理缓冲区后将整个缓冲区写回文件,或者在行编辑中.

代码如下

$^I = "";
my $flag = 0;

while ($line = <>) {
    if($line=~ m/some string/i) {
        $flag = 1;
    }
    if(!$flag) {
        $line =~ s/string/replace/g;
    } 
}

print $line;
Run Code Online (Sandbox Code Playgroud)

regex perl file-io special-variables

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

我是否需要重置Perl哈希索引?

好的,这是一个N00b问题,但它让我感到难过:

我有以下Perl代码:

%project_keys = (
  cd     => "continuous_delivery",
  cm     => "customer_management",
  dem    => "demand",
  dis    => "dis",
  do     => "devops",
  sel    => "selection",
  seo    => "seo"
);

print "proj_code is $proj_code\n";
while ( ($key, $value) = each %project_keys ) {
    if ($key == $proj_code) {
        $url = "http://projects/".$project_keys{$key}."/setter";
        last;
    }
}
Run Code Online (Sandbox Code Playgroud)

$proj_code始终传递相同('dis'),打印行显示.

但是,每次我运行它,我都会获得不同的值project_keys{$key}.

什么(毫无疑问是显而易见的)我做错了什么?我看过关于每个人如何"脆弱"的评论 - 是吗?

perl hash

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

如何在Perl中进行整数除法OR如何使二进制搜索工作?

我正在尝试实现二进制搜索.这是我的代码:

#!/usr/bin/perl
#use strict;
use warnings;

@array = (1..100);
$number = <STDIN>;
$low = 0;
$high = $#array;

while($low < $high){
    print "Searcing $low ---- $high \n";
    $mid = $low + ($high - $low)/2;
    if($array[$mid] == $number){
        print "Found in index:" . $mid;
        last;
    }
    elsif($array[$mid] < $number){
        $low = $mid + 1;
    }
    else{
        $high = $mid - 1;
    }   
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,虽然它是一个直接的实现(至少它将在Java中).
似乎我在分割时得到浮点值并且无法搜索.如果我提供输入,5我会得到垃圾:

5  
Searcing 0 ---- 99  
Searcing 0 ---- 48.5  
Searcing 0 ---- 23.25  
Searcing …
Run Code Online (Sandbox Code Playgroud)

int perl binary-search

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

DBI是访问Perl中数据库的唯一方法吗?

DBI在Perl中访问数据库的唯一方法吗?

除了DBI可用之外还有其他任何可用于访问数据库的包装器MS-SQL/Oracle/MySQL.

database perl

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

关于在perl中使用箭头符号的问题

我跟随两个用perl编写的语句:

@m1 = ( [1,2,3],[4,5,6],[7,8,9] ); # It is an array of references.
$mr = [ [1,2,3],[4,5,6],[7,8,9] ]; # It is an anonymous array. $mr holds reference.
Run Code Online (Sandbox Code Playgroud)

当我尝试print:

print "$m1[0][1]\n"; # this statement outputs: 2; that is expected.

print "$mr->[0][1]\n"; #this statement outputs: 2; that is expected.

print "$mr[0][1]\n"; #this statement doesn't output anything.
Run Code Online (Sandbox Code Playgroud)

我觉得第二和第三印刷语句是一样的.但是,我没有输出第三个print语句.

谁能让我知道第三次印刷声明有什么问题?

perl reference

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

坚持尝试访问哈希值

我继承了一个脚本,我需要能够从哈希中访问一些数据.我希望能够从以下访问MB_Path值.

$VAR1 = bless(
    {  
        'ME_Parts' => [
            bless(
                {  
                    'ME_Bodyhandle' => bless(
                        {  
                            'MB_Path' => '/tmp/msg-15072-1.txt'
                        },
                        'MIME::Body::File'
                    ),
                    'ME_Parts'       => [],
                    'mail_inet_head' => bless(
                        {  
                            'mail_hdr_foldlen' => 79,
                            'mail_hdr_modify'  => 0,
                            'mail_hdr_list'    => [
                                'Content-Type: text/plain; charset="us-ascii"',
                                'Content-Transfer-Encoding: quoted-printable'
                            ],
                            'mail_hdr_hash' => {
                                'Content-Type' => [
                                    \$VAR1->{'ME_Parts'}[0]{'mail_inet_head'}
                                      {'mail_hdr_list'}[0]
                                ],
                                'Content-Transfer-Encoding' => [
                                    \$VAR1->{'ME_Parts'}[0]{'mail_inet_head'}
                                      {'mail_hdr_list'}[1]
                                ]
                            },
                            'mail_hdr_mail_from' => 'KEEP',
                            'mail_hdr_lengths'   => {}
                        },
                        'MIME::Head'
                    )
                },
                'MIME::Entity'
            ),
            bless(
                {  
                    'ME_Bodyhandle' => bless(
                        {   
                            'MB_Path' => '/tmp/msg-15072-2.html'
                        }, …
Run Code Online (Sandbox Code Playgroud)

perl

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

在Perl中,如何测试字符串是否为回文?

我正在尝试编写一个Perl程序来确定7个字符的用户输入是否是回文.

不使用任何数组,字符串或反向函数.

期望的输出:

    Enter in a 7 character item: 1111111
    PALINDROME!
Run Code Online (Sandbox Code Playgroud)

要么

    Enter in a 7 character item: 1234567
    NOT A PALINDROME!
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

print "Enter in a 7 character item: \n";
my ($a, $b, $c, $d, $e, $f, $g);
chomp ($a=<>); chomp ($b=<>); chomp ($c=<>); chomp ($d=<>);
chomp ($e=<>); chomp ($f=<>); chomp ($g=<>);
if ($a~~$g && $b~~$g && $c~~$e){
    print "PALINDROME!\n";
}
else{
    print "NOT A PALINDROME! \n";
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这给了我这个结果:

    Enter in a 7 character item:
    1
    1
    1
    1 …
Run Code Online (Sandbox Code Playgroud)

perl

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