sách gpt4 ai đã đi

Perl 排序字符串

In lại 作者:行者123 更新时间:2023-12-02 08:30:54 25 4
mua khóa gpt4 Nike

我正在尝试根据字符串中包含的元音对文本文件中的小写字符串进行排序。

例如:vowel1 将是 string1 中出现的元音的子串,而 vowel2 对应string2 的子串。如果子字符串 vowel1 在 ASCII 升序中出现在 vowel2 之前,则 string1 在输出中出现在 string2 之前。

我正在尝试通过哈希表来完成此操作,因为它听起来像是最有意义的数据结构。

我的代码:

#!/usr/bin/perl -w
sử dụng nghiêm ngặt;

my %hash;
my $vow = my $w;
my $file = $ARGV[0];

open (IN, $file) or die "Could not open file: $!";

while (my $line = ) {
$vow = ~s/[^aeiou]//g;
$hash{$vow}{$w} = 1;
}
close(IN);

foreach my $key (sort %hash) {
foreach my $word (sort %{$hash {$key}}){
print "$word\n";
}
}

当我编译程序时,这是结果。

Use of uninitialized value $_ in substitution (s///) at sort_strings.pl line 14,  line 1.
Use of uninitialized value $w in hash element at sort_strings.pl line 16, line 1.
Can't use an undefined value as a HASH reference at sort_strings.pl line 23.

我对 Perl 还是个新手,仍然对一些你能做和不能做的事情感到困惑。对于哈希引用错误,我认为您可以使用 % 来引用它。我见过使用数组执行此操作的代码。

Tôi biết $w 是未初始化的,但这种情况下的值并不重要。

有没有比我现在做的更好的方法?

非常感谢任何帮助。

编辑(示例数据):

如果我有一个包含这些词的文本文件

albatross,
apparate,
fanfare,
candelabra,
panacea,
vermeil,
parmesan,
albacore,
false,
beans,

顺序应该是:

apparate,
fanfare,
panacea,
albatross,
albacore,
false,
parmesan,
candelabra,
beans,
vermeil

1 Câu trả lời

好的,我正在尝试这个:

#!/usr/bin/perl

sử dụng nghiêm ngặt;
use warnings;

sub sort_vowelsonly {
my $a_vowels = $a;
my $b_vowels = $b;

$a_vowels =~ s/[^aeiou]//g;
$b_vowels =~ s/[^aeiou]//g;
print "DEBUG: Comparing $a_vowels with $b_vowels\n";
return $a_vowels cmp $b_vowels
}

print sort { sort_vowelsonly } ;

__DATA__
albatross
apparate
fanfare
candelabra
panacea
vermeil
parmesan
albacore
SAI
đậu

关键点是 - 自定义排序子返回 -1、0 或 +1 到 sort。它会在内部接受任何逻辑。所以我们插入 $a$b(特殊排序变量)。去掉“非元音”并使用 perl cmp 函数进行比较。

关于Perl 排序字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26978663/

25 4 0
Bài viết được đề xuất: oracle - 在 case 语句中返回 bool 值
Bài viết được đề xuất: arrays - F#匹配数组的开头
Bài viết được đề xuất: perl - 如何在 perl 中重定向库函数的输出?
Bài viết được đề xuất: arrays - 将列表的 (m,m,n) 数组组合成一个 (m,m,n) 数组
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com