尝试转换JSON为YAML.有这个代码
#!/usr/bin/env perl
use 5.014;
use warnings;
use JSON;
use YAML;
my $json_string = q(
{
"some" : [
{ "isFlagged" : true, "name" : "Some name" },
{ "isFlagged" : false, "name" : "Some other name" }
]
}
);
my $data = decode_json($json_string);
say Dump($data);
Run Code Online (Sandbox Code Playgroud)
它产生:
---
some:
- isFlagged: !!perl/scalar:JSON::PP::Boolean 1
name: Some name
- isFlagged: !!perl/scalar:JSON::PP::Boolean 0
name: Some other name
Run Code Online (Sandbox Code Playgroud)
我需要将JSON::PP::Boolean对象转换为0或1.当然,我可以!!perl/scalar:JSON::PP::Boolean从YAML输出中删除每个字符串,但在我看来这不是一个正确的解决方案. …
有这个非常简单的 perl 脚本:
use strict;
use feature 'say';
use warnings;
my $str = q{some [values] in string [enclosed] [in some] number of [square brackets]};
my @matches;
if(my $num =(@matches)= $str =~ / \[ (.*?) \] /gsx ) {
say "got $num matches:";
say "[$_]" for @matches;
}
Run Code Online (Sandbox Code Playgroud)
它打印:
got 4 matches:
[values]
[enclosed]
[in some]
[square brackets]
Run Code Online (Sandbox Code Playgroud)
如何实现类似 in 的东西bash?
Ps:没有提供任何 bash 代码,因为我什至不知道如何开始。该${BASH_REMATCH[@]}不会在一线工作的全局......对于使用BASH_REMATCH需要提前知道cature组的数量。所以,不知道...... :( 我能做到的最接近的是:
str='some [values] in string [enclosed] [in some] number of …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
my $str = 'Uploaded 07-02?05:14, Size 212.14?MiB, ULed by someone';
print "Pre:".$str."\n";
my $str =~ s/^[a-zA-z0-9,]//g;
print "Post:".$str."\n";
Run Code Online (Sandbox Code Playgroud)
我的目的是删除那些特殊的字符和空格,以便我可以拆分字符串进行进一步处理.
使用上面的正则表达式,我试图删除除字母数字字符和逗号之外的所有字符.不幸的是,我得到一个空白.我是正则表达式的初学者,想知道我的表达方式有什么问题.
如何解决以下问题?
use 5.014;
use warnings;
use Test::Simple tests => 4;
ok( doit(0123) == 83, "arg as octal number" );
ok( doit(83) == 83, "arg as decimal number" );
ok( doit('0123') == 83, "arg as string with leading zero" );
ok( doit('123') == 83, "arg as string without leading zero" );
sub doit {
my $x = shift;
return $x; # how to replace this line
#return got_the_arg_as_string ? oct($x) : $x; # with something like this
}
Run Code Online (Sandbox Code Playgroud)
例如,如果我向doit子传递任何字符串 …
有一个这样的文件下一个 file.txt
line-01
line-02
line-03
line-04
line-05
line-06
line-07
line-08
line-09
line-10
Run Code Online (Sandbox Code Playgroud)
这包含10个统一的行,真实文件具有不同的内容和不同的行数.
需要重复此文件的内容,util达到定义的行数.
尝试下一个脚本:
repcat() {
while :
do
cat $1
done
}
repcat file.txt | head -20
Run Code Online (Sandbox Code Playgroud)
它工作,打印20行,但永远不会结束,需要用CTRL-C终止.
为什么repcat继续写入管道,在没有人读取结果的情况下?
更奇怪的是,添加一个echo之后cat
repcat() {
while :
do
cat $1
echo xxx
done
}
repcat file.txt | head -20
Run Code Online (Sandbox Code Playgroud)
脚本结束.
不明白为什么会这样的行为.