标签: perl-module

Perl中动态的哈希数组

我有一个这样的CSV文件:

name,email,salary
a,b@b.com,1000
d,e@e.com,2000
Run Code Online (Sandbox Code Playgroud)

现在,我需要将其转换为Perl中的哈希映射数组,所以当我执行以下操作时:

table[1]{"email"}
Run Code Online (Sandbox Code Playgroud)

它返回e@e.com.

我写的代码是:

open(DATA, "<$file") or die "Cannot open the file\n";
    my @table;

    #fetch header line
    $line = <DATA>;
    my @header = split(',',$line);

    #fetch data tuples
    while($line = <DATA>)
    {
        my %map;
        my @row = split(',',$line);
        for($index = 0; $index <= $#header; $index++)
        {
            $map{"$header[$index]"} = $row[$index];
        }
        push(@table, %map);
    }
    close(DATA);
Run Code Online (Sandbox Code Playgroud)

但我没有得到理想的结果..你可以帮忙吗?提前致谢...

perl perl-module

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

Perl 不使用 datetime 模块转换日期时区

我的日期格式如下: 05/26/2013 06:08:00
上述日期的时区是 GMT -7

我如何将上述内容更改为 GMT 日期和时间,格式为:2013 年 5 月 26 日 13:08:00 GMT

注意:我无法安装任何 perl 模块。我知道我可以通过 DateTime 轻松完成此操作,但我无法安装它。

谢谢。

perl perl-module mod-perl

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

Perl只打印一行,但打印到屏幕上

我正在尝试打印符合我特定条件的设备列表.当我将所有内容打印到屏幕上时,效果很好.但是,当我将其打印到文件时,它只打印一行.我是perl的新手,所以任何帮助都将不胜感激.谢谢

$dbConnection = &openConnection();
# run the "list_device" command via the initial connection
my $device_list = $dbConnection->list_device();
foreach my $listDevices ($device_list->result()) {
    if (   ($listDevices->model !~ /PIX/)
        && ($listDevices->model !~ /ASA/)
        && ($listDevices->model !~ /ACE/)
        && ($listDevices->driverName !~ /Context/)
        && ($listDevices->hostName =~ /^ls1.*/i)
        && ($listDevices->vendor =~ /Cisco/)
    ) {
        #create device hash for LS
        $deviceHash{"deviceID"}         = $listDevices->deviceID;
        $deviceHash{"deviceType"}       = $listDevices->deviceType;
        $deviceHash{"vendor"}           = $listDevices->vendor;
        $deviceHash{"model"}            = $listDevices->model;
        $deviceHash{"primaryIPAddress"} = $listDevices > primaryIPAddress;
        $deviceHash{"hostName"}         = $listDevices->hostName;

        # mapping array
        my @returnData = …
Run Code Online (Sandbox Code Playgroud)

perl perl-module mod-perl perl-data-structures

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

Perl:什么时候在模块中使用导出?

我对线条感到困惑

use Exporter;
our @EXPORT =qw(a b);
Run Code Online (Sandbox Code Playgroud)

在一个包中。

我见过没有使用 @EXPORT 的包并且工作得很好。相当困惑......我已经用谷歌搜索了但没有找到太多解释。

我的问题是什么时候应该使用@EXPORT?不使用它的原因是什么?

perl perl-module

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

在另一个文件中使用一个perl文件的变量

我正在写两个perl脚本,需要一个包含长字符串列表的数组这里我想在一个单独的perl包中声明我的数组并使用这个包在其他两个perl脚本中访问该数组

你能告诉我怎么能这样做

我检查了perl cpan模块Exporter,但是可以发现它可以导出子程序,我只想要导出我的数组而不是任何子程序

先感谢您.

perl perl-module

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

即使错误消息在@inc中显示,也无法在@inc中找到perl模块

我正在尝试执行一个perl脚本,并且我已经让它工作之前我在它所在的文件夹中运行它...即,以下工作.

\higherFolder\folder>UpdateTestCasesScript.pl Test.feature Test_Cases.xls
Run Code Online (Sandbox Code Playgroud)

当我尝试在该文件夹的命令行OUTSIDE上运行此脚本时Buuuuut

\HigherFolder>folder\UpdateTestCasesScript.pl RealFile.feature folder\Test_Cases.xls
Run Code Online (Sandbox Code Playgroud)

我得到这个奇怪的错误:

Can't locate Spreadsheet/ParseExcel.pm in @INC <@INC contains: Spreadsheet/Parse
Excel.pl C:/Strawberry/perl/site/lib C:/strawberry/perl/vendor/lib C:/strawberry
/perl/lib .> at C:...\HigherFolder\folder\UpdateTestCasesScript.pl line 4
Run Code Online (Sandbox Code Playgroud)

但是如果你看一下我脚本的前几行......它们如下:

#!/usr/bin/perl -w

use lib 'Spreadsheet/ParseExcel.pm';
use Spreadsheet::ParseExcel;
Run Code Online (Sandbox Code Playgroud)

所以我有一个想法,它可能会以某种方式查看错误的@INC,但有没有人知道如何解决它?

谢谢!!!

perl perl-module locate

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

我如何使用Perl :: Critic :: Policy :: ValuesAndExpressions :: ProhibitMagicNumbers

我想使用模块Perl :: Critic :: Policy :: ValuesAndExpressions :: ProhibitMagicNumbers来检查.C文件中的幻数

use strict;
use warnings;
use Perl::Critic;

open(my $FILE, "< test.c") or die $!;
my $critic = Perl::Critic->new(); 
my @violations = $critic->critique($FILE);
print @violations;

close($FILE);
Run Code Online (Sandbox Code Playgroud)

如果我使用Perl :: Critic,我得到错误无法解析代码:解析Perl文档时出现未知错误

如果我使用Perl :: Critic :: Policy :: ValuesAndExpressions :: ProhibitMagicNumbers,我得到错误无法通过包"Perl :: Critic"找到对象方法"new"

perl perl-module

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

读取没有任何XML模块的xml文件

我正在尝试使用Perl读取XML表单,但我不能使用任何XML模块,如XML :: Simple,XML :: Parse.

它是一个简单的XML表单,包含一些基本信息和MS Doc附件.我想阅读此XML并下载此附加的Doc文件,然后在屏幕上打印XML信息.

但是我不知道如何在没有XML模块的情况下如何做到这一点,我听说XML文件可以使用Data :: Dumper进行解析,但我不熟悉这个模块,所以没有得到如何做到这一点.

如果没有XML模块有任何办法可以帮助我吗?

示例XML:

<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications 
      with XML.</description>
   </book>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
   </book>
</catalog>
Run Code Online (Sandbox Code Playgroud)

xml perl perl-module xml-parsing

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

Perl模块缺少错误

我是一个学习perl的新人,并且正在努力工作.我真的陷入了困境,在过去的4小时里一直没有任何结果.

我在目录中使用了一堆自定义模块,然后我获得了实现新知识库的票证,因此我在Moduledirectory中添加了一个新模块.添加后,当我尝试访问MyModule时,它根本不起作用.我明白了

Can't locate FolderName/MyModuleName.pm in @INC 
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗.这真的很烦人.我试图重启apache服务器,但仍然出现相同的错误.

我也尝试编译我的模块,但是我得到了相同的错误,除了模块的名称不同,它是我在MyModule中调用/使用的那个.

如果你能帮助我,请告诉我.提前致谢.

编辑:添加更多详细信息,我得到的确切错误(可读性换行符)是:

Can't locate Net2Net/KnowledgeBase.pm in @INC (@INC contains:
    (DOCUMENT_ROOT)/bin 
    /usr/local/lib/perl5/5.8.8/sun4-solaris
    /usr/local/lib/perl5/5.8.8
    /usr/local/lib/perl5/site_perl/5.8.8/sun4-solaris
    /usr/local/lib/perl5/site_perl/5.8.8
    /usr/local/lib/perl5/site_perl
    .
) at /data1/web/intradev.com-80/docs/gss/kb/ajax-kb-update.cgi line 6.
BEGIN failed--compilation aborted at /data1/web/intradev.com-80/docs/gss/kb/ajax-kb-update.cgi line 6.
Run Code Online (Sandbox Code Playgroud)

perl perl-module

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

Perl模块如何"工作"?

我对Perl模块感到困惑.我得到一个模块可以用来转储一大堆子,整理主代码.

但是,模块之间的关系是什么?

模块可以"使用"其他模块吗?

我必须使用导出,还是可以放弃那些东西?

我如何解决循环使用?(Security.pm使用Html.pmHtml.pm使用Security.pm).我知道明显的答案,但在某些情况下我需要使用Security.pm例程,Html.pm反之亦然 - 不知道如何解决问题.

如果我从所有模块中删除所有"use"子句......那么我必须使用完整的子限定符.例如,Pm::Html::get_user_friends($dbh, $uid)将用于Security确定朋友是否是被禁用的用户(被禁止的是其中一部分Security).

我只是没有得到这个模块的东西.所有"教程"只涉及一个模块,从不多重,也不使用真实世界的例子.

我遇到多个模块的唯一一次是使用OO代码.但没有任何东西可以确切地告诉我多个模块如何相互作用.

perl perl-module

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

如何在哈希中进行自然排序?

use strict;
use warnings;
use 5.010;

my $value;
my $key;

my %hash_keysort = (
  servlet      => 'true',
  servlet_dude => 123,
  hai          => "null",
  array        => 123
);
Run Code Online (Sandbox Code Playgroud)

我想获得相同的输出.

我试过这个包使用Sort::Naturally.

即使我使用自然排序,我也无法获得相同的输出.每次钥匙都在变化.

预期产量:

servlet : true
servlet_dude : 123
hai : null
array : 123
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个nsort功能.我无法得到因为它是钥匙.

我尝试了所有排序类型.我无法解决问题.

我需要每次都以相同的顺序获取密钥.但事情是密钥药水一直在改变..是否有任何逻辑来获得相同顺序的密钥.我的目的是每次都需要在不改变魔药的情况下获得钥匙.



更新

#!/usr/bin/perl

use Sort::Naturally;

use strict;
use warnings;

my $value;
my $key;

my %hash_keysort = (
    servlet      => 'true',
    servlet_dude => 123,
    hai          => "null",
    array        => [ 123, "null", …
Run Code Online (Sandbox Code Playgroud)

perl perl-module

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