我有MySQL(perl)的代码:
UPDATE pages
SET rkey = rkey + 2,
lkey = IF(lkey >= $key, lkey + 2, lkey)
WHERE rkey >= $key
Run Code Online (Sandbox Code Playgroud)
我需要在SQLite中使用此代码,但不支持IF()函数.我可以做什么?
我最近和Rakudo Perl 6一起玩,正在寻找类似于CPAN的项目.我找到了CPAN 6,但我认为还没有Perl 6代码.
所以我正在寻找一些替代方案,它不一定是长期解决方案,但能够维护模块,并用Perl 6编写.
随着Rakudo的发展,很快就可能创建更复杂的Perl 6代码.
我安装了Perl6 rakudobrew并且浏览已安装的文件以查看十六进制文件名列表~/.rakudobrew/moar-2018.08/install/share/perl6/site/sources以及~/.rakudobrew/moar-2018.08/install/share/perl6/sources/.
例如
> ls ~/.rakudobrew/moar-2018.08/install/share/perl6/sources/
09A0291155A88760B69483D7F27D1FBD8A131A35 AAC61C0EC6F88780427830443A057030CAA33846
24DD121B5B4774C04A7084827BFAD92199756E03 C57EBB9F7A3922A4DA48EE8FCF34A4DC55942942
2ACCA56EF5582D3ED623105F00BD76D7449263F7 C712FE6969F786C9380D643DF17E85D06868219E
51E302443A2C8FF185ABC10CA1E5520EFEE885A1 FBA542C3C62C08EB82C1F4D25BE7B4696F41B923
522BE83A1D821D8844E8579B32BA04966BAB7B87 FE7156F9200E802D3DB8FA628CF91AD6B020539B
5DD1D8B49C838828E13504545C427D3D157E56EC
Run Code Online (Sandbox Code Playgroud)
这些文件包含软件包的源代码,但这种方式并不容易访问.那是什么理由?
只要我有键值对,解组很简单,但是如何以不同的顺序解组不同类型的数组呢?单个元素定义明确且已知,但顺序不是.
我无法想出一个漂亮的解决方案.
我会尝试对所有元素进行错误吗?是否有某种联合类型可以为我做到这一点?
package main
import (
"encoding/json"
"fmt"
)
var my_json string = `{
"an_array":[
"with_a string",
{
"and":"some_more",
"different":["nested", "types"]
}
]
}`
type MyInner struct {
And string
Different []string
}
type MyJSON struct {
An_array []json.RawMessage
}
func main() {
var my_json_test MyJSON
e := json.Unmarshal([]byte(my_json), &my_json_test)
if e != nil {
fmt.Println(e)
} else {
for index, value := range my_json_test.An_array {
fmt.Println("index: ", index)
fmt.Println("value: ", string(value))
}
var my_inner MyInner
err := …Run Code Online (Sandbox Code Playgroud) 我需要重新安装CPAN模块的依赖项.通常安装的某些依赖项缺失,但程序包本身是最新的cpan.
那我怎么还能安装依赖项呢?
我想在我的所有程序中使用一些包和一些编译指示,例如:
use 5.014;
use warnings;
use autodie;
use My::ModuleA::Something;
use ModuleB qw(Func1 Func2);
Run Code Online (Sandbox Code Playgroud)
我不想在每个模块中重复自己,所以寻找一种方法如何制作一个包,例如My::Common包含上述包的内容以及我的程序中只包含:
use My::Common;
say Func1("hello"); #say enabled and Func1 imported in the My::Common
Run Code Online (Sandbox Code Playgroud)
怎么实现这个?
这是阅读preldoc -f use,perldoc perlmodlib所以我认为我必须"有点"用BEGIN加上需要和导入,但绝对不知道如何.
更新:我已经尝试了基本的东西.
用require- 我的prg.pl程序.
require 'mymods.pl';
$var = "hello";
croak "$var\n";
Run Code Online (Sandbox Code Playgroud)
mymods.pl包含
use strict;
use feature 'say';
use Carp qw(carp croak cluck);
1;
Run Code Online (Sandbox Code Playgroud)
不工作.得到错误:
$ perl prg.pl
String found where operator expected at prg.pl line 3, near "croak "$var\n""
(Do you …Run Code Online (Sandbox Code Playgroud) 什么是从列表中返回字符串的最优雅的方法ok,是的,我知道我可以做类似的事情
public string Convert(List<int> something)
{
var s = new StringBuilder();
foreach(int i in something)
s.AppendFormat("{0} ", i);
return s.ToString();
}
Run Code Online (Sandbox Code Playgroud)
但我确定有一种方法可以用lambdas做到这一点我也尝试追加到一个字符串构建器,但这不是做什么预期
这种情况发生在关闭我的应用程序的一半时间,在该应用程序中,我在设计时将TLMDHiTimer放置在我的表单上,Enabled设置为true.在我的OnFormClose事件中,我调用MyLMDHiTimer.Enabled:= false.当这个被调用时,我有时(大约一半的时间)得到这个例外.
我调试并进入调用,发现它是LMDTimer.pas中的第246行,它给出了这个错误.
FThread.Terminate;
Run Code Online (Sandbox Code Playgroud)
我使用的是最新版本的LMDTools.我在周末之前完成了LMD工具的重新安装,并且已经将组件移除并重新添加到表单中.
根据我的发现,这与TExternalThread有关,但Embarcadero没有关于它的文档,我没有在LMDTools源代码中找到任何引用它的文档.
使用完全更新的RAD Studio 2010,Delphi 2010.
让我感到不安的是,没有任何文件.谷歌实际上谈到了一个结果,其中有人说错误是由于试图终止TExternalThread造成的.但是看看这个LMDHiTimer的源代码,不是一次它的目的是做任何事情,而是创建一个常规的TThread.我可以找到一个google结果,Thread:无法终止外部创建的线程?在Embarcadero上提到使用GetCurrentThread()和GetCurrentThreadId()来获取挂钩到现有线程所需的数据,但TLMDHiTimer没有这样做.它只是创建自己的TThread后代,它有自己的Create()构造函数(当然是重写,并且在构造函数的开头继承了调用)
那么......这个TExternalThread到底是什么?还有其他人遇到过这种例外吗?也许找出了解决方案或解决方法?我已经向LMDTools自己的支持提出了几乎完全相同的问题,但在多个地方提问并不会有什么问题.
提前感谢您的任何帮助.
我想访问无法验证证书的网站.我正在使用WWW :: Mechanize get请求.那么如何忽略这一点并继续连接到网站?
我现在和Perl合作已有几个月了.至于现在,我的脚本工作但它们远非完美.
我现在想优化内存使用,因此我正在寻找一种方法来分解每个变量/ hash的内存使用情况.
有没有办法查看变量使用多少内存?
perl ×4
cpan ×2
perl6 ×2
raku ×2
c# ×1
delphi ×1
delphi-2010 ×1
dependencies ×1
external ×1
go ×1
https ×1
if-statement ×1
json ×1
rakudo ×1
sql ×1