我有一个包含28个元素的数组.
我将数组内容复制到哈希中.
如果我尝试打印哈希,它不会显示所有键和值.
代码如下,
@new;
%hash = @new;
foreach $food (keys %hash)
{
$color = $hash{$food};
print "$food is $color.\n";
}
Run Code Online (Sandbox Code Playgroud)
输出是::
attribute is Mandatory.
min is 0X00.
value is 778.
max is 9940486857.
name is Security_header.
type is nibble.
Run Code Online (Sandbox Code Playgroud)
数组@new内容是,
name Protocol_discriminator attribute Mandatory value 778 min 0X00 max 994048685 value 7 min 0 max F name Security_header attribute Mandatory type nibble value 778 min 0X00 max 9940486857
Run Code Online (Sandbox Code Playgroud)
如果我尝试遍历散列,我希望将数组的所有内容复制到散列中并进行打印.但有些如何只将部分数组内容复制到哈希中.
任何人都可以帮助克服这个问题.我过去两天都在苦苦挣扎.
谢谢Senthil.
我有一小段代码用于在这样的文本文件中打印内容,
use strict;
use warnings;
open (FILE, "2.txt") || die "$!\n";
my $var = <FILE>;
while ($var ne "")
{
print "$var";
$var = <FILE>;
}
Run Code Online (Sandbox Code Playgroud)
文字文件是,
line 1
line 2
line 3
Run Code Online (Sandbox Code Playgroud)
运行代码后,我收到这样的警告,
line 1
line 2
line 3
Use of uninitialized value $var in string ne at del.pl line 10, <FILE> line 3.
Run Code Online (Sandbox Code Playgroud)
如何克服这个警告.
我有一段用于searchnig目录的Perl代码,如果找到匹配则显示该目录的内容.代码如下:
$test_case_directory = "/home/sait11/Desktop/SaLT/Data_Base/Test_Case";
$xml_file_name = "sample.xml"
$file_search_return = file_search($xml_file_name);
print "file search return::$file_search_return\n";
sub file_search
{
opendir (DIR, $test_case_directory) or die "\n\tFailed to open directory that contains the test case xml files\n\n";
print "xml_file_name in sub routines:: $xml_file_name\n";
$dirs_found = grep { /^$xml_file_name/i } readdir DIR;
print "Files in the directory are dirs_found :: $dirs_found\n";
closedir (DIR);
return $dirs_found;
}
Run Code Online (Sandbox Code Playgroud)
输出是,
xml_file_name in sub routines:: sample.xml
Files in the directory are dirs_found :: 1
file search return::1
Run Code Online (Sandbox Code Playgroud)
它没有返回找到的文件名.相反,它总是返回数字1.
我不知道为什么它没有返回 …
我使用XML :: Simple来解析XML文件.输出是一个哈希值.(使用Data :: Dumper)
示例代码,XML文件在下面给出了输出.
Perl代码:
use XML::Simple;
use Data::Dumper;
$xml = new XML::Simple;
$data = $xml->XMLin("spam.xml");
print Dumper($data);
Run Code Online (Sandbox Code Playgroud)
XML文件内容(输入到解析器)::
<Attach_request>
<Protocol_discriminator>
<name> Protocol_discriminator </name>
<attribute> Mandatory </attribute>
<type> nibble </type>
<value> 7 </value>
<min> 0 </min>
<max> F </max>
</Protocol_discriminator>
<Security_header>
<name> Security_header </name>
<attribute> Mandatory </attribute>
<type> nibble </type>
<value> 7 </value>
<min> 0 </min>
<max> F </max>
</Security_header>
<Security_header1>
<name> Security_header </name>
<attribute> Mandatory </attribute>
<type> nibble </type>
<value> 7 </value>
<min> 0 </min>
<max> F …Run Code Online (Sandbox Code Playgroud) 在Perl中,我该如何使用该next语句?在所有示例程序中,我看到声明如下:next LINEP
我不明白那个标签在做什么.任何人都能用一个容易理解的例子来帮助我吗?
我使用XML :: Simple来解析XML文件.代码在下面给出了XML文件,
use Tie::IxHash;
tie %$data, "Tie::IxHash";
use XML::Simple;
use Data::Dumper;
$xml = new XML::Simple;
$data = $xml->XMLin("ship_order.xml");
print Dumper($data);
Run Code Online (Sandbox Code Playgroud)
XML文件,(ship_order.xml)
<?xml version="1.0" encoding="UTF-8" ?>
<shipment>
<shiptoaddress>
<name>Prasad</name>
<address>AnnaNagar</address>
</shiptoaddress>
<items>
<quantity>5</quantity>
<price>100</price>
</items>
<items>
<quantity>6</quantity>
<price>50</price>
</items>
<num_of_items>2</num_of_items>
</shipment>
Run Code Online (Sandbox Code Playgroud)
即使我使用Tie :: IxHash模块,输出也没有按顺序排列.
我的输出:
$VAR1 = {
'num_of_items' => '2',
'shiptoaddress' => {
'name' => 'Prasad',
'address' => 'AnnaNagar'
},
'items' => [
{
'quantity' => '5',
'price' => '100'
},
{
'quantity' => '6',
'price' => '50'
} …Run Code Online (Sandbox Code Playgroud) 我在目录中有一个文件,我想一次从目录中选择一个特定的文件.
代码如下:
$xml_file_name = <STDIN>;
chomp ($xml_file_name);
@o = file_search($xml_file_name);
print "file::@o\n";
sub file_search
{
opendir (DIR, "/home/sait11/Desktop/test/Test cases") or die "Failed to open directory\n";
@dirs_found = grep { /$xml_file_name/ } readdir DIR;
closedir (DIR);
# print "dir ::@dirs_found\n";
return @dirs_found;
}
Run Code Online (Sandbox Code Playgroud)
我正在输入要返回的文件名sample.xml.但是在@dirs_found变量中,所有以's'开头的文件名都会被存储.
如何一次找出确切的一个文件?