我有一个some.yaml包含以下内容的文件.
init_config: {}
instances:
- host: <IP>
username: <username>
password: <password>
Run Code Online (Sandbox Code Playgroud)
应该如下解析和更新yaml文件.
init_config: {}
instances:
- host: 1.2.3.4
username: Username
password: Password
Run Code Online (Sandbox Code Playgroud)
如何解析值并适当更新它们?
我想知道perl是否有一些类似于python的try catch机制,我可以提高用户定义的异常并相应地处理.
Python代码:
try:
number = 6
i_num = 3
if i_num < number:
raise ValueTooSmallError
elif i_num > number:
raise ValueTooLargeError
break
except ValueTooSmallError:
print("This value is too small, try again!")
print()
except ValueTooLargeError:
print("This value is too large, try again!")
print()
Run Code Online (Sandbox Code Playgroud)
我知道perl尝试抓住机制,如下所示:
sub method_one {
try {
if ("number" eq "one") {
die("one");
} else {
die("two");
}
} catch {
if ($@ eq "one") {
print "Failed at one";
}
}
}
Run Code Online (Sandbox Code Playgroud)
要么
eval {
open(FILE, $file) …Run Code Online (Sandbox Code Playgroud) 我需要创建一个 sql 查询:
SELECT * FROM users WHERE id = 10 AND name = "Chetan"
Run Code Online (Sandbox Code Playgroud)
现在,gorm 的 where 函数如下所示,
// Where return a new relation, filter records with given conditions, accepts `map`, `struct` or `string` as conditions, refer http://jinzhu.github.io/gorm/crud.html#query
func (s *DB) Where(query interface{}, args ...interface{}) *DB {
return s.clone().search.Where(query, args...).db
}
Run Code Online (Sandbox Code Playgroud)
这意味着它接受查询和参数。例子 :
dbDriver.Where("id = ?", id).First(t)
Run Code Online (Sandbox Code Playgroud)
我如何动态传递多个变量。例子:
SELECT * FROM users WHERE id = 10 AND name = "Chetan"
SELECT * FROM users WHERE id = 10
SELECT …Run Code Online (Sandbox Code Playgroud) 我必须模拟如下所示的方法:
import json
def some_method(self):
output_one = json.loads(varone)
output_two = json.loads(vartwo)
Run Code Online (Sandbox Code Playgroud)
import json
self.stubs = stubout.StubOutForTesting()
self.stubs.Set(json, "loads", lambda *a: output_one)
self.stubs.Set(json, "loads", lambda *a: output_two)
Run Code Online (Sandbox Code Playgroud)
结果是看到只有output_two因为output_one被覆盖了。我应该如何模拟一个方法两次并期望每次都有不同的输出。
我有一个我无法控制的函数,它返回一个实际上是哈希的字符串.它看起来像下面这样:
{"offset":0,"limit":500,"count":0,"virtual_machines":[]}
Run Code Online (Sandbox Code Playgroud)
我需要检查计数是否大于0.因为输出是一个字符串而不是哈希,我试图拆分字符串并从中获取输出.
相同的片段如下:
my $output = '{"offset":0,"limit":500,"count":0,"virtual_machines":[]}';
$output =~ s/ +/ /g;
my @words = split /[:,"\s\/]+/, $output;
print Dumper(@words);
Run Code Online (Sandbox Code Playgroud)
这个输出是:
$VAR1 = '{';
$VAR2 = 'offset';
$VAR3 = '0';
$VAR4 = 'limit';
$VAR5 = '500';
$VAR6 = 'count';
$VAR7 = '0';
$VAR8 = 'virtual_machines';
$VAR9 = '[]}';
Run Code Online (Sandbox Code Playgroud)
现在,我可以获得价值$ VAR7并获得计数.
有没有办法将字符串转换为哈希值,然后使用键来获取值而不是使用正则表达式和拆分.有人可以帮帮我吗!
假设我有2个版本变量:
$one = "1.2.3"
$two = "1.2.4"
Run Code Online (Sandbox Code Playgroud)
如何比较这两个版本变量的版本是否匹配,或者一>两个或一<两个?
请注意,我有一个只读系统,无法添加任何Perl模块。因此,我无法添加versionPerl模块。