小编Sin*_*nür的帖子

为什么我的程序使用Perl的getc函数不能正常工作?

我想使用Perl计算消息中字符出现的频率.例如,如果字符"a"在消息中出现10次,那么频率将为10.为此,我使用getc函数一次从FILE读取消息.这是我写的片段.我知道,这是非常基本的.但是当我编译时,我收到一个错误:

细节:

#!/usr/bin/perl

use strict;
use warnings;

my $input=$ARGV[0];

open(INPUT,"<$input");

while(<INPUT>
{
 my $c=getc(INPUT);
 print $c."\n";
}

close(INPUT);
Run Code Online (Sandbox Code Playgroud)

我尝试编译时遇到以下错误:

Use of uninitialized value in print at AccessChar.pl line 13, <INPUT> line 1.

我无法弄清楚,这个脚本有什么问题.有人可以帮我解决这个问题吗?

我甚至尝试使用getcINPUT代替getc(INPUT).在运行此脚本时,我认为我不需要包含任何其他包.

perl getc

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

如何使用Perl正则表达式从HTML文件中提取信息?

我有两个文件,XML和HTML,需要从某些模式中提取数据.

我的XML文件格式很好,我可以使用readline读取一行并在标签之间搜索数据.

if($line =~ /\<tag1\>$varvalue\<\/tag1\>/)`
Run Code Online (Sandbox Code Playgroud)

但是,对于我的HTML,它有一个我见过的最糟糕的代码,文件是这样的:

<div class="theater">
    <h2>
    <a href="/showtimes/university-village-3" >**University Village 3**</a></h2>
    <div class="address">
        <i>**3323 South Hoover Street, Los Angeles CA 90007 | (213) 748-6321**</i>
    </div>
</div>

<div class="mtitle">
    <a href="/movie/dream-house-2011"  title="Dream House" onmouseover="mB(event, 771204354);"  >**Dream House**</a>
    <span>**(PG-13 , 1 hr. 31 min.)**</span>
</div>

<div class="times">

    **1:00 PM,**
</div>
Run Code Online (Sandbox Code Playgroud)

现在从这个文件我需要选择以粗体显示的数据.

我可以使用Perl正则表达式来搜索此文件中的数据.

html regex xml perl

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

Perl脚本可以用于处理不同的文件格式吗?

我没有对Perl做过多少工作,并试图找出你是否可以使用不同类型的文件格式,除了文本文件?如pdf,doc,xls,xml.此外,如果可以做到它需要CPAN模块还是只需要基本的Perl脚本?

xml pdf perl file-io ms-word

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

在Perl中,如何以键和值的形式读取文件并以%hash的形式保存文件的整个内容?

嗨,我是Perl编程的新手.我正在尝试读取一个.csv由逗号分隔的2个字段的文件.

我想以密钥及其值的形式将文件的所有数据放入哈希.

我的输入文件是

数据

2.8, gitu

2.5,  Has


2.7  Hwait

3.1-weiity

4.2,  city

2.7:query

4.9,  city

16.2,  play

6.2,  game

7,,,8 Jami

4.0,  city

此行代码不会打印输入文件中存在的所有有效数据.有效数据采用行开头的形式,数字之间有逗号,然后是名称.否则应忽略其他无效条目.当我打印时,它会跳过几个有效的条目显示%hashforHighMagnitude; 请告诉我我在哪里丢失?如何获得所有有效条目%hashforHighMagnitude;

我想这样做

open ( OF, "$inputFile") or die "Cant open input file: $!\n";
while ( $Line =<OF>) {

    if($Line =~ /^\d+\.+\d*\s*,\s*\w+$/g)              
    {
        ( my $magnitude, my $place ) = split(/,/,$Line);

        $hashforHighMagnitude{$place} = $magnitude;
        $hash{$place}++;
    }
    else
    {
        next;
    }
}

print %hashforHighMagnitude;

close(OF);
Run Code Online (Sandbox Code Playgroud)

输出应该是

2.8, gitu

2.5,  Has

4.2,  city

4.9, …

perl hash key-value readfile

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

在Perl中,如何打印与散列中的最大值对应的键?

如何只打印哈希的第一个键和元素?

我已经有一个排序的哈希,但我想只打印第一个键和各自的值谢谢,

感谢大家最后我将键和值推送到两个不同的@array和每个数组的打印元素0,它的工作原理:)

perl hash

0
推荐指数
2
解决办法
3431
查看次数

如何根据命令行参数编写将字母转换为大写或小写的程序?

我正在为C程序编写此代码,该程序在调用时将字母转换为小写:

./arg lower
Run Code Online (Sandbox Code Playgroud)

并在调用时将它们转换为大写:

./arg upper
Run Code Online (Sandbox Code Playgroud)

这是我写的代码,请帮助我:

#include<stdio.h>
#include<ctype.h>
main(int argc,char *argv[])
{
    int i;
    char c;
    for(i=1;i<argc;++i)
    {

        if(*(argv+i)=="lower")
        {
             while((c=getchar())!=EOF)
                 {
                      c=tolower(c);
                      putchar(c);
                 }
        }
        if(*(argv+i)=="upper")
        {
            while((c=getchar())!=EOF)
                 {
                      c=toupper(c);
                      putchar(c);
                 }                    
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
2
解决办法
923
查看次数

如何从Perl调用Java程序?

我是Perl的新手,我正在尝试做一些事情而无法找到答案.

我创建了一个Java项目,其中包含一个获取多个输入参数的主类.

我想用Perl包装我的Java:我想创建一个获取输入参数的Perl脚本,然后将它们传递给Java程序,然后运行它.

例如:

如果我的主叫mymain,我这样称呼它:mymain 3 4 hi(3,4并且hi是输入参数),我想创建一个名为Perl程序myperl,当它被调用作为myperl 3 4 hi将传递参数给Java程序并运行它.

我怎样才能做到这一点?

java perl

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

为什么通过ref需要转移而不是@_?

我有一个关于通过引用Perl中的子例程的问题.对于值,如果我使用@_传递它可以工作但是对于ref只有shift工作.不知道为什么.我有以下示例代码:

这有效:

#! /usr/bin/perl

use strict;
use warnings;

my $name = 'John';
PassScalarByRef( \$name );

sub PassScalarByRef{
    my $got = shift;
    print "Hello $$got\n";
}
Run Code Online (Sandbox Code Playgroud)

但不是这个:

#! /usr/bin/perl

use strict;
use warnings;

my $name = 'John';
PassScalarByRef( \$name );

sub PassScalarByRef{
    my $got = @_;
    print "Hello $$got\n";
}
Run Code Online (Sandbox Code Playgroud)

perl

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

在Perl中,当我尝试递归遍历目录时,为什么我的目录句柄被关闭?

这是我的代码.我正在搜索重复的目录.我需要深度优先搜索.我使用递归,如果DH看到一个文件夹,那么它会查找该文件夹.但完成此文件夹后DH处理关闭和程序不会查看顶级文件夹的剩余部分.

        #! /usr/bin/perl 
use Digest::MD5;

dtraverse(@ARGV) ;

sub dtraverse {
   my $fullpathname ;
   my @subdirlist ; 
   my @filelist2  ; 
   my $newpath ;
   my $name ;
   my $d ; 

    print "entered    nnnn\n";
   $fullpathname = $_[0]; 
   opendir(DH,$fullpathname) or die("Cannot open directory\n"); 
   @subdirlist = () ; 
   @filelist2 = () ; 
   while ($name = readdir(DH) ) { 
       next if (($name eq ".") or ($name eq "..") ); 
       $newpath = $fullpathname . "/" . $name ; 
        print "asdasd == $name\n";
       if (-d $newpath ) { …
Run Code Online (Sandbox Code Playgroud)

directory recursion perl

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

如何使用foreach循环检查数组的哪些元素等于给定的字符串?

我的foreach循环不能按照我的意愿工作.我希望它循环遍历数组,并找到一个元素存在的时间和元素不存在的时间.但是,我得到了所有人的说法Not an apple.

@fruit = ('apple','orange','pear');

foreach(@fruit){
     if(@fruit != 'apple'){
          print "Not an apple\n";
     }
     else{
          print "Is an apple\n";
     }
}
Run Code Online (Sandbox Code Playgroud)

perl foreach

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

标签 统计

perl ×9

hash ×2

xml ×2

c ×1

directory ×1

file-io ×1

foreach ×1

getc ×1

html ×1

java ×1

key-value ×1

ms-word ×1

pdf ×1

readfile ×1

recursion ×1

regex ×1