我正在尝试使用 perl 脚本创建一个 excel 文件。
我按照教程编写了以下代码:
#!/usr/bin/perl
use strict;
use warnings;
use Excel::Writer::XLSX;
use Excel::Writer::XLSX::Utility;
my $workbook = Excel::Writer::XLSX->new( 'perl.xlsx' ); # Step 1
$worksheet = $workbook->add_worksheet('cc'); # Step 2
$worksheet->write( 'A1', 'Hi Excel!' );
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
Global symbol "$worksheet" requires explicit package name at test_excel.pl line 10.
Global symbol "$worksheet" requires explicit package name at test_excel.pl line 11.
Run Code Online (Sandbox Code Playgroud) 我不熟悉Perl的哈希/引用语法,它让我的眼睛受伤了.
我有以下JSON:
{
"Arg":"Custom_Light state alias protocol",
"Results": [
{
"Name":"Custom_Light",
"Internals": { },
"Readings": {
"protocol": { "Value":"V3", "Time":"2017-01-14 18:49:18" },
"state": { "Value":"off", "Time":"2017-03-05 10:39:50" }
},
"Attributes": { "alias": "Kitchen light" }
} ],
"totalResultsReturned":1
}
Run Code Online (Sandbox Code Playgroud)
如何直接获取Reading> Protocol Value和Reading> state Value以及Attributes> Alias?
我使用默认JSON
编码器/解码器,它的工作非常出色.使用Dumper($json)
我获取所有JSON,但我不知道如何直接访问它而不使用foreach与数组中的所有数组.
我尝试过以下方法:
my $json = from_json( $readout, { utf8 => 1 } );
print "No. Entries:", scalar(keys($json)); #works, returns 3
my @results = %$json{Results};
Dumper(@results[1]); #I get the Results array
Run Code Online (Sandbox Code Playgroud)
从这里开始它已经很难看了.在那 …
我试图以特定格式转储yaml文件,如下所述; 如果我必须转储下面的内容,我该如何定义我的哈希值(%database)?
-name:Fred
Language:python
-name:Barney
Language:perl
-name: Betty
Language:java
-name:Wilma
Language:ruby
open FILE, '>>', "database.txt";
print FILE Dump(\%database);
Run Code Online (Sandbox Code Playgroud) 我有一个哈希.
'20111124' => undef,
'20111125' => undef,
'20111129' => undef,
'20111130' => '126002',
'20111201' => '126002',
'20111202' => '126002',
'20111205' => '126002',
'20111206' => '126002',
'20111207' => '126002'
Run Code Online (Sandbox Code Playgroud)
我想得到第一个有价值的键.
我已经尝试迭代哈希,但由于哈希有时很大,获得第一个具有定义值的键的最快方法是什么?
如何在没有"headers"的情况下读取这样的JSON字符串:
[{"SMS":"hello","NUM":12345},{"SMS":"bye","NUM":54321}]
Run Code Online (Sandbox Code Playgroud)
my $json = JSON->new->utf8;
my $perl_data = $json->decode($content);
print ref($perl_data) . "\n";
Run Code Online (Sandbox Code Playgroud)
返回ARRAY.我想要每个元素.
谢谢
我必须使用perl逐行读取一个大的unix文件.如果是大文件,脚本运行时间超过2分钟,但是对于小文件则需要较少的时间.
我使用以下代码:
open(FILE , "filename");
while ( < FILE > ){
}
Run Code Online (Sandbox Code Playgroud)
请让我知道一种更快地解析文件的方法
这是我的提示:编写一个Perl程序,从命令行读取任意数量的字符串,并按字母顺序显示它们.这就是我所拥有的:
#!/usr/bin/perl
use strict;
use warnings;
# read command line arguments
# verify correct input and display error and quit if input is valid
# (1) quit unless we have the correct number of command-line args
my $numargs = string $num_args = $#ARGV + 1;
if ( $num_args != 2 ) {
exit;
}
if ( $num_args > 2 ) {
my $num_args eq string
print "Enter multiple random strings of letters, separated by spaces: ";
exit;
}
# (2) …
Run Code Online (Sandbox Code Playgroud)