使用print运算符将键/值数组写入外部 javascript 文件会生成与打印到屏幕不同的输出,尽管我尽了最大努力,但我无法弄清楚原因。具体来说,当打印到屏幕时,正如预期的那样,我的 Perl 脚本输出:
var genusSpecies={"Adam's Needle (Yucca filamentosa)":["Adam's Needle (Yucca filamentosa)1.jpg","._Adam's Needle (Yucca filamentosa)2.jpg"...
Run Code Online (Sandbox Code Playgroud)
然而,当打印到外部 JavaScript 文件时,点下划线._被错误地添加到数组的键和值中,输出:
var genusSpecies={"._Adam's Needle (Yucca filamentosa)":["._Adam's Needle (Yucca filamentosa)1.jpg","._Adam's Needle (Yucca filamentosa)2.jpg"...
Run Code Online (Sandbox Code Playgroud)
这是我的 Perl 脚本:
#!/usr/bin/perl
use strict;
use warnings;
use JSON::PP;
use English; ## use names rather than symbols for special variables
my $dir = './Plants1024';
opendir my $dfh, $dir or die "Can't open $dir: $OS_ERROR";
my %genus_species; ## store matching entries in a hash
for my …Run Code Online (Sandbox Code Playgroud) 我的 Perl 脚本搜索文件名目录,使用grep仅输出名称中没有数字 2-9 的文件名。这意味着,按照预期,也将返回以数字“1”结尾的文件名。但是,我想使用chop函数输出这些没有“1”的文件名,但不知道如何。也许grep和chop函数可以在一行代码中组合来实现这一点?请指教。谢谢。
这是我的 Perl 脚本:
#!/usr/bin/perl
use strict;
use warnings;
my $dir = '/Users/jdm/Desktop/xampp/htdocs/cnc/images/plants';
opendir(DIR, $dir);
@files = grep (/^[^2-9]*\.png\z/,readdir(DIR));
foreach $file (@files) {
print "$file\n";
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
Ilex_verticillata.png
Asarum_canadense1.png
Ageratina_altissima.png
Lonicera_maackii.png
Chelone_obliqua1.png
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出,从文件名的末尾删除了数字“1”:
Ilex_verticillata.png
Asarum_canadense.png
Ageratina_altissima.png
Lonicera_maackii.png
Chelone_obliqua.png
Run Code Online (Sandbox Code Playgroud) 我很难按字母顺序对 Perl 脚本的输出进行排序。
这是脚本:
#!/usr/bin/perl
use strict;
use warnings;
use English; ## use names rather than symbols for special variables
my $dir = '/Users/jdm/Desktop/xampp/htdocs/cnc/images/plants';
opendir my $dfh, $dir or die "Can't open $dir: $OS_ERROR";
my %genus_species; ## store matching entries in a hash
for my $file (readdir $dfh)
{
next unless $file =~ /.png$/; ## entry must have .png extension
my $genus = $file =~ s/\d*\.png$//r;
push(@{$genus_species{$genus}}, $file); ## push to array,the @{} is to cast the single entry to …Run Code Online (Sandbox Code Playgroud)