我想使用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).在运行此脚本时,我认为我不需要包含任何其他包.
我有两个文件,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正则表达式来搜索此文件中的数据.
我没有对Perl做过多少工作,并试图找出你是否可以使用不同类型的文件格式,除了文本文件?如pdf,doc,xls,xml.此外,如果可以做到它需要CPAN模块还是只需要基本的Perl脚本?
嗨,我是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, …
如何只打印哈希的第一个键和元素?
我已经有一个排序的哈希,但我想只打印第一个键和各自的值谢谢,
感谢大家最后我将键和值推送到两个不同的@array和每个数组的打印元素0,它的工作原理:)
我正在为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) 我是Perl的新手,我正在尝试做一些事情而无法找到答案.
我创建了一个Java项目,其中包含一个获取多个输入参数的主类.
我想用Perl包装我的Java:我想创建一个获取输入参数的Perl脚本,然后将它们传递给Java程序,然后运行它.
例如:
如果我的主叫mymain,我这样称呼它:mymain 3 4 hi(3,4并且hi是输入参数),我想创建一个名为Perl程序myperl,当它被调用作为myperl 3 4 hi将传递参数给Java程序并运行它.
我怎样才能做到这一点?
我有一个关于通过引用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) 这是我的代码.我正在搜索重复的目录.我需要深度优先搜索.我使用递归,如果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) 我的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)