在Perl中,如何从数组中生成哈希@A并@B具有相同数量的元素?目标是让每个价值@A成为价值的关键@B.产生的散列%C将使得可以从@B提供密钥中唯一地标识元素@A.
我正在尝试为我在SourceForge上托管的字典项目编写自动完成功能.不幸的是,SF上的Perl没有安装JSON模块.如何在不使用模块本身的情况下解决此问题?作为模型,我在jensbits上使用了JQuery UI自动完成指南.
这是Perl代码,它应该查询文本并发送到自动完成模块
#!/usr/bin/perl
use strict;
use CGI;
use DBI;
use JSON;
# HTTP HEADER
print "Content-type: application/json; charset=iso-8859-1\n\n";
my $dbh = DBI->connect("DBI:mysql:database;mysql_read_default_file=/path/.my.cnf");
$dbh->do("set character set utf8");
$dbh->do("set names utf8");
my ($p, $sth, @query_output);
$p = new CGI;
my $term = $p->param('term');
$sth = $dbh->prepare(qq{SELECT trim(both char(13) FROM article) AS value, definition FROM dict WHERE article like ?;});
$sth->execute('%'.$term.'%');
# LOOP THROUGH RESULTS
while ( my $row = $sth->fetchrow_hashref ){
push @query_output, $row;
}
#CLOSE THE …Run Code Online (Sandbox Code Playgroud) 在我正在编辑的字典文件中,我经常需要在<>的位置插入字符"◊".有没有办法将"◊"映射到某个键,这样我按"r"代替,然后my_shortcut将<>替换为"◊"?我找到了一种在.vimrc中制作imap映射的方法:
:imap <> ?
Run Code Online (Sandbox Code Playgroud)
但是更改为插入模式是次优的,是否可以将它全部置于替换模式中,我应该在.vimrc中写什么?
我正在尝试修复亚美尼亚字母表中的排序,因为所有标准的Unix工具和编程语言只对两种主要方言中的一种(西方)排序字母和单词.
把它翻译成技术问题就是重新命令其中一个字符" ւ ",把它放在字母之间的不同位置,让我们说它是最后一个字符,以便为顺序方言(东方)正确排序单词.在语言上用东方方言来说,这个" ւ "符号不是"独立的",而是用2个字符" ու " 写的字母的一部分.目前的排序将字母" ու " 置于"ոք"或"ոփ"2字母构造之后.
基本上,如果你想让例如字母"v"代替拉丁字母表中的字母"z",它应该是完全相似的.
我想尝试使用类似的东西
#!/usr/bin/perl -w
use strict;
my (@sortd, @unsortd, $char_u, $char_x);
#@unsortd = qw(????? ????? ??????? ???? ????? ????? ???);
@unsortd = qw(?? ?? ?? ??);
@sortd = sort {
$char_u = "?";
$char_x = split(//, @unsortd);
if ($char_u gt $char_x) {
1;
} else {
return $a cmp $b;
}
} @unsortd;
print "@sortd\n";
Run Code Online (Sandbox Code Playgroud)
但这并不是整个单词的缩放,只有2个字母的形式是固定的.
更新:我能够使用tr函数解决这个问题,将字母映射到数字,如Perlmonks所示
我有一个带有单词列表的文件,每个都在新行和大写字母中,如
现在,应该将数组转换为小写但失败的代码出了什么问题:映射数组又是大写的?
#!/usr/bin/perl -w
open(MYFILE, "$ARGV[0]") || die "opening bigList $!";
@Llist=<MYFILE>;
close (MYFILE);
@lc_word = map { lc } @Llist;
print @lc_word;
Run Code Online (Sandbox Code Playgroud)