我没有对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) 我有N数组,我想在单个for循环中打印它们的第一个元素
我的代码:
@arr1=qw(1..5);
@arr2=qw(6..10);
...
@arrN=qw(...);
for($i=1;$i<=$N;$i++)
{
print "$arr[$i][0]";
}
Run Code Online (Sandbox Code Playgroud) 我正在使用的模式s///包含正则表达式特殊字符.我如何引用它们以便正则表达式引擎将它们视为文字字符.
我可以quotemeta在这样的模式中调用子例程()吗?
$string =~ s/quotemeta($regex)/$new/g;
Run Code Online (Sandbox Code Playgroud)
我该怎么办?