我现在正在学习perl并且有一个简短的脚本,我在其中访问一个数据库(DBI模块)来提取一些统计信息.下面发布的代码似乎有点重复,我想知道它是否可以简化为哈希循环.每个数据库查询的唯一区别是myo_maps_study中的正则表达式
#Get the number of myo stress studies
$sth = $dbh->prepare("SELECT count(myo_maps_study) FROM myo WHERE myo_maps_study ~ 'MYO[0-9]*\$' AND myo_date <= ? AND myo_date >= ?");
$sth->execute($date_stop,$date_start) or die "Couldn't execute myo stress query" . $sth->errstr;
my $n_myo_stress = $sth->fetchrow_array;
#Get the number of myo redistribution studies
$sth = $dbh->prepare("SELECT count(myo_maps_study) FROM myo WHERE myo_maps_study ~ 'MYO[0-9]*R\$' AND myo_date <= ? AND myo_date >= ?");
$sth->execute($date_stop,$date_start) or die "Couldn't execute myo rep query" . $sth->errstr;
my $n_myo_rep = $sth->fetchrow_array;
#Stress …Run Code Online (Sandbox Code Playgroud) 下面是一段Perl代码.我想循环使用不同的正则表达式($myo)和不同的运算符($op)的几个查询,并将结果保存到数组数组而不是一个大@result数组.
即,结果为数组MYO[0-9]*$将是各运营商的阵列$results[0][0],$results[0][1]和... ... MYO[0-9]*R$,$results[1][0],$results[1][1].
有任何想法吗?
my @tech_ops = ("AR","DB","GM","LW","MM","SA");
my @results;
for my $myo (qw(MYO[0-9]*$ MYO[0-9]*R$ MYO[0-9]*T$ MYO[0-9]*U$)) {
foreach $op (@tech_ops)
{
$sth->execute($myo, $date_stop, $date_start,$op)
or die "Couldn't execute query for $myo: " . $sth->errstr;
push @results, $sth->fetchrow_array;
}
}
Run Code Online (Sandbox Code Playgroud) 我想规范化我们小网络上所有计算机的yum.repo文件,即
sudo scp /etc/yum.repos.d/* $HOSTNAME:/etc/yum.repos.d/
Run Code Online (Sandbox Code Playgroud)
我可以很容易地遍历所有主机名并执行命令进行复制,但是每次都提示我输入root密码,这会变得很烦人.我怎样才能用bash或perl编写脚本,这样我只需要输入一次root命令?
我有一个格式的文本文件
Date,ufov_mean,ufov_stdev,ufov_cov,ufov_int_pl,ufov_int_min,ufov_diff,ufov_nema_int,ufov_nema_dif,cfov_mean,cfov_stdev,cfov_cov,cfov_int_pl,cfov_int_min,cfov_diff,cfov_nema_int,cfov_nema_dif
24/01/11,5187.10,110.10,2.12,8.48,-6.46,7.25,7.40,3.76,5177.55,104.03,2.01,8.68,-6.29,7.25,7.40,3.76
26/01/11,5182.35,106.65,2.06,6.50,-6.36,7.87,6.42,4.09,5170.29,100.45,1.94,6.45,-5.42,7.54,5.91,3.92
28/01/11,5183.88,104.99,2.03,7.31,-6.48,9.63,6.87,5.06,5178.99,101.03,1.95,6.16,-6.39,9.08,6.28,4.76
31/01/11,5183.55,98.35,1.90,5.66,-6.30,7.92,6.00,4.12,5172.41,96.00,1.86,5.71,-5.81,7.92,5.76,4.12
02/02/11,5183.16,104.20,2.01,6.83,-6.43,7.47,6.61,3.88,5176.24,98.74,1.91,6.06,-5.65,7.47,5.84,3.88
03/02/11,5184.14,106.77,2.06,8.16,-5.98,7.89,6.99,4.11,5179.31,100.62,1.94,7.45,-5.89,7.89,6.62,4.11
Run Code Online (Sandbox Code Playgroud)
我想要做的是在给定日期范围内的散点图中绘制其中几个参数.我可以使用它来绘制其中一个
qc<-data.frame(read.csv("tc_h1_qc", header=T))
qc$Date = as.Date(qc$Date, format='%d/%m/%y')
Sys.Date()
Sys.Date()-30
p <- ggplot(qc,aes(x=Date,y=cfov_cov)) + geom_point(shape=1,colour="red") + geom_line(colour="red") + theme_bw() + scale_x_date(labels = date_format("%d/%m/%y"), limits = c(Sys.Date()-30, Sys.Date()))
Run Code Online (Sandbox Code Playgroud)
如何覆盖其他参数,每个参数都有不同的geom_point颜色,并创建一个合适的图例(类似于http://docs.ggplot2.org/0.9.3/facet_grid-27.png样式的图例,虽然我看不到我如何使用facets与我的数据框架结构)?
在我的代码中,我将一个变量光盘分配给disc我的linux系统上的命令结果.这输出字符串RESEARCH
my $disc = `disc`;
print "$disc\n";
$disc = chomp($disc);
print "$disc\n";
Run Code Online (Sandbox Code Playgroud)
但是,当我使用chomp从字符串中去除换行符时,它将字符串更改为1.这是输出
RESEARCH
1
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?
我有名为$A_cine,等的整数标量变量$B_cine.
我也有一个子程序display这需要一个参数'A','B','C',等.
我$letter = $_[0]在子程序中分配.我现在想要获取$A_cine或的值,$B_cine并将其分配给新的标量变量$cine.
我已经尝试过$cine = '$'.$view."_cine",这可以识别$cine为字符串$A_cine(它应该).但是,有没有办法解释$A_cine所以我可以得到$A_cine之前定义的标量的数值?
我在文件image1.hd中有一行文字
axial rotation:=0.880157
Run Code Online (Sandbox Code Playgroud)
我想要这个号码.使用核心perl我这样做
open FILE, "<", "$Z_DIR/image1.hd" or die $!;
while (<FILE>){
if (/axial rotation:=(\S+)/)
{
$axial_rot = $1;
}
}
close FILE;
Run Code Online (Sandbox Code Playgroud)
返回所需的输出= 0.880157
我更喜欢一个班轮,因为我会做一些类似于其他一些文件.之前我了解了File :: Slurp模块,我尝试了以下内容,并在断言后面进行了正面观察
my $axial_rot = read_file("$Z_DIR/image1.hd") =~ /(?<=axial rotation:=)\S+/
Run Code Online (Sandbox Code Playgroud)
这将返回1 - 无论正则表达式如何.如何更改后一个正则表达式以实现所需的输出
我有一个NeoprobeApp.py调用拟合函数的python脚本Parameter.py Parameter.py如下所示
from scipy import optimize
import numpy as np
class Parameter:
def __init__(self, value):
self.value = value
def set(self, value):
self.value = value
def __call__(self):
return self.value
def fit(function, parameters, y, x = None):
def f(params):
i = 0
for p in parameters:
p.set(params[i])
i += 1
return y - function(x)
if x is None: x = arange(y.shape[0])
p = [param() for param in parameters]
optimize.leastsq(f, p)
Run Code Online (Sandbox Code Playgroud)
我成功导入了fit函数from Parameter import fit.但是,当我尝试初始化我的参数时
# Define …Run Code Online (Sandbox Code Playgroud) 我有一个数据库表,其中包含要合并的数以千计的近似重复项。我psycopg2.extras用来执行查询并最终在字典列表中获得结果。
dict_cur = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
query = """SELECT DISTINCT pat_uid, pat_first_name, pat_last_name, pat_dob_dt, pat_chi_no,
pat_addr, wtg_uid, wtg_pat_uid, std_uid, std_pat_uid, work_uid, work_pat_uid
from ((patients left outer join waiting
on (pat_uid = wtg_pat_uid)) left outer join studies
on (std_pat_uid = pat_uid) left outer join worklist
on (work_pat_uid = pat_uid))
where (pat_first_name, pat_last_name, pat_chi_no)
in (SELECT pat_first_name, pat_last_name, pat_chi_no from patients
group by pat_first_name, pat_last_name, pat_chi_no
HAVING count(*) >= 2) AND
pat_chi_no ~ '^[0-9]{10,10}\$'
order by pat_last_name asc, pat_first_name asc,
pat_dob_dt asc""" …Run Code Online (Sandbox Code Playgroud)