今天尝试安装https://github.com/finanalyst/raku-pod-render时遇到了重大问题。
最大的问题之一是使用 ssl 加密的测试失败。看:
https://github.com/grondilu/libdigest-raku/issues/25
https://github.com/jnthn/p6-io-socket-async-ssl/issues/69
然后是我在三月份提交的这个旧问题: https ://github.com/jnthn/p6-ssh-libssh/issues/18
到目前为止,这是三个不同的模块,我在 Mac 上安装时遇到了麻烦。我的机器上安装了 openssl@1.1 和 openssl@3 brew 软件包。
其他 mac 用户对如何彻底解决这个问题有什么建议吗?
在这种情况下,一个 XPath 表达式是否可以<a>使用元素中的文本匹配所有以下元素"Link"?
例子:
<a href="blah">Link</a><a href="blah"><span>Link</span></a><a href="blah"><div>Link</div></a><a href="blah"><div><span>Link</span></div></a># web-scraper object
has 'worker' => (
is => 'ro',
isa => 'Web::Scraper',
default => sub {
scraper(sub { });
}
);
Run Code Online (Sandbox Code Playgroud)
但是当我在我的类中放入相同的代码时,我收到以下错误:
Not a HASH reference at accessor MyModule::scraper
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
has 'scraper' => (is => 'rw', isa => 'Web::Scraper', default => sub { scraper( sub { } ); });
Run Code Online (Sandbox Code Playgroud)
以下是穆斯的错误:
# There were 1 warning(s)
# Previous test 0 ''
# You are overwriting a locally defined function (scraper) with an accessor at /usr/lib/x86_64-linux-gnu/perl5/5.20/Moose/Meta/Attribute.pm …Run Code Online (Sandbox Code Playgroud) 我有20个字段的这一行数据:
my $data = '54243|601|0|||0|N|0|0|0|0|0||||||99582|';
Run Code Online (Sandbox Code Playgroud)
我用这个来分割数据:
my @data = split ('\|'), $data;
Run Code Online (Sandbox Code Playgroud)
但是,不是20个数据,而是只有19个:
print scalar @data;
Run Code Online (Sandbox Code Playgroud)
如果最后一个角色是a,我可以手动push一个空字符串,但我想知道是否有更多的perlish方式.@data|
试图DBD::mysql在运行mysql v 5.7.17的Mac Sierra计算机上安装.尝试安装时出现以下错误cpanm install DBD::mysql:
Checking if libs are available for compiling...
Can't link/include C library 'ssl', 'crypto', aborting.
到目前为止我发现的其他解决方案并没有解决Sierra的问题.
我有一个 perl 脚本,它创建一个 ssh 隧道并在它上面建立一个 Perl DBI 连接来查询远程主机上的数据库:
1 my $ssh = Net::OpenSSH->new('me@host.com');
2 $pid = $ssh->spawn({ssh_opts => '-L 127.0.0.1:12345:127.0.0.1:3306'}, 'sleep 3');
3 return DBI->connect($dsn, $db_user, $db_pass);
Run Code Online (Sandbox Code Playgroud)
这大约在 80% 到 90% 的时间内有效,但其余时间在尝试连接到数据库时出现此错误:
mux_client_request_session:从主服务器读取失败:管道损坏
在解决这个问题的过程中,我注意到如果我在第 2 行之后用usleep (10000)很短的时间让程序休眠,它 100% 的时间都可以工作。我不确定这是为什么,但我很好奇知道以及如何正确解决问题。
谢谢。
我修改了 php.ini 文件以启用操作码缓存并重新启动 apache,但 phpinfo() 却看不到它。php -v 说:
PHP 7.4.1 (cli) (built: Dec 18 2019 14:46:18) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
Run Code Online (Sandbox Code Playgroud)
我从这个命令中看到的大多数其他示例都说“使用 Zend Opcache”。
根据 php 的说法,除了 at 的文件之外/usr/local/etc/php/7.4/php.ini,没有其他 .ini 文件被使用。
我尝试使用 pecl 安装 zend opcache,但这表示它适用于版本 5.2.0 至 5.5.0。
通过google搜索了30分钟。但没有取得任何进展。
得到这样的文字:
Want this || Not this
该行也可能如下所示:
Want this | Not this
用一根管子。
我使用这个语法来解析它:
grammar HC {
token TOP { <pre> <divider> <post> }
token pre { \N*? <?before <divider>> }
token divider { <[|]> ** 1..2 }
token post { \N* }
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?我很乐意能够做更多这样的事情:
grammar HC {
token TOP { <pre> <divider> <post> }
token pre { \N*? }
token divider { <[|]> ** 1..2 }
token post { \N* }
}
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。如果我这样做:
grammar HC {
token TOP { …Run Code Online (Sandbox Code Playgroud) 收到:
my @list = <one two three>;
my %hash;
my $item1 = @list.shift;
%hash{$item1} = {$item1 => 1};
my $item2 = @list.shift;
%hash{$item1} = {$item2 => 1};
my $item3 = @list.shift;
%hash{$item1}{$item2} = {$item3 => 1};
say %hash;
Run Code Online (Sandbox Code Playgroud)
输出所需的数据结构:
{one => {two => {three => 1}}}
Run Code Online (Sandbox Code Playgroud)
显然,如果是递归的话会更好,所以我这样写:
sub get-hash(%parent-hash, $last-item, *@list) {
my $item = @list.shift;
%parent-hash{$last-item} = { $item => 1 };
get-hash(%parent-hash{$last-item}, $item, @list) if @list;
return %parent-hash<root>;
}
%hash = get-hash({}, 'root', @list2);
Run Code Online (Sandbox Code Playgroud)
输出:
{one => {two …Run Code Online (Sandbox Code Playgroud) 我想尝试在 Windows 上测试 Raku 代码。我设法在 VirtualBox 上设置 Windows 11,并安装 Raku 二进制文件,并且可以执行脚本。
run但是,我似乎无法在不返回错误的情况下获得最简单的命令来执行任何操作:
run('ls');
结果是:
The spawned command 'ls' exited unsuccessfully (exit code: 1, signal: 0)
in block <unit> at .\test.txt line 5
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用dir命令,但遇到了同样的问题。