use List::MoreUtils 'uniq';
print join ", ", sort uniq ("b", "a", "a");
Run Code Online (Sandbox Code Playgroud)
导致参数“ a”在排序时不是数字...
print join ", ", uniq sort ("b", "a", "a");
Run Code Online (Sandbox Code Playgroud)
可以正常工作。
print join ", ", sort {$a cmp $b} uniq ("b", "a", "a");
Run Code Online (Sandbox Code Playgroud)
也可以工作-但是第一个示例有什么问题?
我有大约 30 个具有结构的文本文件
wordleft1|wordright1
wordleft2|wordright2
wordleft3|wordright3
...
Run Code Online (Sandbox Code Playgroud)
这些文件的总大小约为 1 GB,大约有 3200 万行单词组合。
我尝试了几种方法来尽可能快地加载它们并将组合存储在哈希中
$hash{$wordleft} = $wordright
Run Code Online (Sandbox Code Playgroud)
逐文件打开文件并逐行读取大约需要 42 秒。然后我用可存储模块存储哈希
store \%hash, $filename
Run Code Online (Sandbox Code Playgroud)
再次加载数据
$hashref = retrieve $filename
Run Code Online (Sandbox Code Playgroud)
将时间减少到大约 28 秒。我使用快速 SSD 驱动器和快速 CPU,并有足够的 RAM 来保存所有数据(大约需要 7 GB)。
我正在寻找一种更快的方法将这些数据加载到 RAM 中(由于一些原因,我无法将其保留在那里)。
我想从字符串中删除以\ xF0(带有ASCII代码0xF0的字符)开头的4字节UTF8字符并尝试
sText = Regex.Replace (sText, "\xF0...", "");
Run Code Online (Sandbox Code Playgroud)
这不起作用.使用两个反斜杠也不起作用.
确切的输入是https://de.wikipedia.org/w/index.php?title=Spezial:Exportieren&action=submit&pages=Unicode的内容4字节字符是文本"[[Violinschlüssel]]"之后的字符,十六进制表示法:.. 0x65 0x6c 0x5d 0x5d 0x20 0xf0 0x9d 0x84 0x9e 0x20 ..预期输出为0x65 0x6c 0x5d 0x5d 0x20 0x20 ..
怎么了?
假设我想在每个单词后删除一个空格。实际上,空格前的正则表达式更为复杂。
$text =~ s/(\w+) /$1/g;
Run Code Online (Sandbox Code Playgroud)
按预期工作,但我不喜欢需要$1,因为匹配某些内容,将其删除并再次插入似乎效率不高。我尝试了积极的前瞻,但这不起作用:
$text =~ s/(?=\w+) //g;
Run Code Online (Sandbox Code Playgroud)
我知道它不起作用,因为“位置”不会随着这种前瞻而改变。有没有另一种方法可以摆脱$1?
我有一个文本,例如
my $text = "share your knowledge, Q&A-style"
Run Code Online (Sandbox Code Playgroud)
并希望在列表中获取它们之间的单词和字符.如果我使用
my (@parts) = $text =~ /(\w+)/g
Run Code Online (Sandbox Code Playgroud)
我明白了
("share", "your", "knowledge", "Q", "A", "style")
Run Code Online (Sandbox Code Playgroud)
现在我想得到以下列表:
("share", "your", "knowledge", ",", "Q", "&", "A", "-", "style")
Run Code Online (Sandbox Code Playgroud)
有没有办法在字符旁边循环遍历文本?