任何人都可以提供一个代码示例,如何在类中设置变量更改的观察者?我试图用几种方式使用不同的功能(Scalar :: Watcher,Moo的触发属性)和OOP框架(Moo,Mojo :: Base),但都失败了.
以下是我失败的代码,以便更好地理解我的任务.在这个例子中,我需要每次更改attr1时更新attr2.
使用Mojo :: Base和Scalar :: Watcher:
package Cat;
use Mojo::Base -base;
use Scalar::Watcher qw(when_modified);
use feature 'say';
has 'attr1' => 1;
has 'attr2' => 2;
has 'test' => sub { # "fake" attribute for getting access to $self
my $self = shift;
when_modified $self->attr1, sub { $self->attr2(3); say "meow" };
};
package main;
use Data::Dumper;
my $me = Cat->new;
$me->attr1;
warn Dumper $me;
say $me->attr1(3)->attr2; # attr2 is still 2, but …Run Code Online (Sandbox Code Playgroud) 例子:
pavel@Z546:~/test/dind-volumes$ ls
test.txt
pavel@Z546:~/test/dind-volumes$ docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd):/app -w /app -it docker sh
/app # ls
test.txt
/app # pwd
/app
/app # docker run -v $(pwd):/app2 -w /app2 -it alpine sh
/app2 # ls
share tomita-cfg
/app2 # pwd
/app2
Run Code Online (Sandbox Code Playgroud)
安装在哪个位置-v $(pwd):/app2?它不在~/test/dind-volumes主机操作系统上。share是tomita-cfg来自主机操作系统的文件夹,但路径完全不同,甚至不是从~
我有以下脚本:
use Modern::Perl;
use List::Compare;
use Set::IntSpan;
use List::Util qw/first/;
use List::MoreUtils qw/firstidx onlyidx/;
use Data::Dumper;
sub get_index_by_data {
my ( $data, $arr ) = @_;
return onlyidx { $_ eq $data } @$arr;
}
sub detect_busy_intervals {
my %params = @_;
$params{epoch_key} = 'epoch' if ( !defined $params{epoch_key} ) ;
my @all_epochs = @ { $params{all_epochs} };
my @free_epochs = map { $_->{ $params{epoch_key} } } @{ $params{data} };
my $lc = List::Compare->new( $params{all_epochs}, \@free_epochs );
my @busy_epochs = …Run Code Online (Sandbox Code Playgroud) 测试我的 bash 脚本的同事向我发送了此屏幕截图
他bash从 brew安装。有可能declare没有-A选项bash:5吗?
我用 docker 检查过,bash:5必须有-A:
$ docker run -it bash:5
bash-5.0# declare -A
declare -A BASH_ALIASES=()
declare -A BASH_CMDS=()
Run Code Online (Sandbox Code Playgroud)
bash:3当没有关联数组支持时,屏幕截图类似于输出:
$ docker run -it bash:3
bash-3.2# declare -A
bash: declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
Run Code Online (Sandbox Code Playgroud)
是否可以在bash:5没有关联数组支持的情况下进行编译?
这是bash自制程序包的页面,我在./configureFormula ruby 安装脚本部分没有找到任何特殊选项。
我编写了rmlz用于修剪字符串中所有前导零的函数。
# remove all leading zeroes from string
use strict;
use warnings;
use feature 'say';
sub rmlz {
my ( $str ) = @_;
if ( $str =~ /^(.[0])/ ) {
return substr( $str, length($1));
}
return $str;
}
say rmlz('0050625'); # must return 50625
Run Code Online (Sandbox Code Playgroud)
有没有最优雅,最清晰的方法来重写此代码?还是regexp + length + substr是最好的选择?
我无法禁用 lxc 容器的 apparmor:
$ lxc launch images:centos/7 a1
Creating a1
Starting a1
$ lxc config set a1 lxc.apparmor.profile unconfined
Error: Invalid config: Unknown configuration key: lxc.apparmor.profile
$ lxc --version
3.0.3
Run Code Online (Sandbox Code Playgroud)
出了什么问题以及如何设置属性?
我有 Javascript 代码,我需要将 javascript 变量解析为 perl 哈希。有没有现成的模块?我尝试了JE::parse()和JavaScript::HashRef::Decode但都没有奏效。
预期行为:
use Data::Dumper;
use SomeModule::ParseJSVariables qw/decode_js/;
my $str = qq/
var data = {
'abc': 1,
'def' : 2
'xyz' : { 'foo' : 'bar' }
}
/;
my $res = decode_js($str);
warn Dumper $res; #
# expected result:
# {
# name => 'data',
# value => {
# 'abc' => 1,
# 'def' => 2
# 'xyz' => { 'foo' => 'bar' }
# }
# } …Run Code Online (Sandbox Code Playgroud)