我想知道是否/如何让vim查找下一次出现的变量.假设变量的名称只是'n',那么/n就会给我所有出现的那个字母,这并不总是非常有用.我想我可以创建一个正则表达式来解决问题,但我想知道是否有一些命令/按键我还不知道; 因为我所有的谷歌搜索都无济于事所以我决定在这里提出一个问题.
非常感谢你的帮助!
使用vim我想用另一个字符替换所有字符到一个特定的字符,比如一个空格 - 而不影响行中字符的布局/数量.这是一个例子:
之前:
real(kind=R12), intent(out) :: my_var
Run Code Online (Sandbox Code Playgroud)
, intent(out)用空格替换后(即从开始,,然后向上)):
real(kind=R12) :: my_var
Run Code Online (Sandbox Code Playgroud)
我知道r要替换一个角色,并且即将nr替换n角色,但我想知道我是否可以完成我的任务而不必先计算我想要替换的角色.
非常感谢您的回复!
我已经读过你的网络服务器出了问题,这可能导致在网络浏览器中将PHP脚本显示为纯文本文件; 因此,我将大多数PHP脚本移动到Web根目录之外的目录中.现在我一直想知道我的cgi-bin中的CGI脚本是否会发生同样的情况.
我主要关心的是一个包含MySQL数据库用户名和密码的脚本.如果这是一个可能的安全漏洞(至少就数据库内容而言),是否有办法将敏感数据放在不同的位置并从那里获取(如将其保存在不同目录的文件中并阅读它来自那个文件,例如)?我的脚本是用Perl btw编写的.
我正在阅读Effective Perl Programming(第2版).我遇到过一段被描述为写得不好的代码,但我还不了解它的内容是什么,或者它应该如何改进.如果有人可以向我解释这件事,那就太棒了.
这是有问题的代码:
sub sum_values_per_key {
my ( $class, $dsn, $user, $password, $parameters ) = @_;
my %results;
my $dbh =
DBI->connect( $dsn, $user, $password, $parameters );
my $sth = $dbh->prepare(
'select key, calculate(value) from my_table');
$sth->execute();
# ... fill %results ...
$sth->finish();
$dbh->disconnect();
return \%results;
}
Run Code Online (Sandbox Code Playgroud)
该示例来自测试代码的章节(第324/325页).让我想知道如何改进代码的句子如下:
由于代码写得很差并直接访问DBI,因此您必须创建一个假的DBI对象来代替真实的东西.
我可能还没有理解这本书迄今为止试图教给我的很多东西,或者我已经跳过了相关部分以了解上述代码的不良做法......好了,先谢谢你的帮助!
我想创建一个类的实例,其中包含默认为空的列表; 而不是以后将此列表设置为最终完整列表,我想连续添加项目.这是一段示例代码,说明了这一点:
#!/usr/bin/python
class test:
def __init__(self, lst=[], intg=0):
self.lista = lst
self.integer = intg
name_dict = {}
counter = 0
for name in ('Anne', 'Leo', 'Suzy'):
counter += 1
name_dict[name] = test()
name_dict[name].integer += 1
name_dict[name].lista.append(counter)
print name, name_dict[name].integer, name_dict[name].lista
Run Code Online (Sandbox Code Playgroud)
当我运行上述程序时,我希望得到
安妮1 [1]
狮子座1 [2]
Suzy 1 [3]
因为我假设lista总是初始化为空列表.
我得到的是这样的:
安妮1 [1]
狮子座1 [1,2]
Suzy 1 [1,2,3]
如果我更换self.lista = lst由self.lista = []它工作正常,当我添加行就像name_dict[name].lista = []for循环.
为什么保留先前对象列表的内容,但它们的值integer不是?我对Python很陌生,所以如果有人可以向我指出我的想法/假设误入歧途,那将会很棒.
非常感谢您的回复.
我想知道如何/如果我可以重用我的终端历史记录中的命令,但是在修改后的版本中.这是一个例子:
$ filter_script file2 > output_file2
$ # ...
# now run the same command, but replace '2' with '4'
$ filter_script file4 > output_file4
Run Code Online (Sandbox Code Playgroud)
这是一个非常简单的例子,当然我可以简单地从历史记录中访问命令并手动替换两个2s,但是有更优雅的方式吗?
非常感谢你的时间!
我想使用gnuplot(或matplotlib,如果需要)创建一个这样的图形,但我不知道它是否/如何完成:

当然,这只是一个粗略的草图.重要的是我需要绘制成对的值(在这个例子中,每对由红点和蓝点组成).每对中的一个项目是单个值,另一个项目应该显示一系列值(我的想法是用误差条绘制平均值以指示范围的最大值和最小值,但我愿意接受更好的想法) .除了给出各种类别的名称之外,x轴没有其他目的 - 所有重要的是y值.
我很确定我可以使用直方图创建这样的东西(值对和x类别),但在这种情况下,盒子只会让我错误.
到目前为止我得到了:我有这个gnuplot命令:
plot 'TEST.out' using 0:2:3:xticlabel(1) w errorbars pt 7 notitle
Run Code Online (Sandbox Code Playgroud)
与此数据文件一起使用(类别名称,y值,错误栏值):
cat1 15 0
cat1 18 3
cat2 13 0
cat2 10 4
Run Code Online (Sandbox Code Playgroud)
它会产生低于正确方向的图,但是它还不是理想的(所有数据点都有相同的颜色,对于单个值,您仍然可以看到使用了误差条;分组也不是很好 - 如果组成一对的两个点彼此更接近,这将使得情节更容易在眼睛上).

如果有人有任何建议(即使创建一个看起来不像我在开头给出的例子的图表).我会很感激.
非常感谢你的时间!
我编写了一个程序,它读取包含多维数据的文件(最常见的是 3D,但也可能出现 2D)。为了提高简单性,我想将数据存储在相同等级的数组中(或假装是一个等级的数组),即使用三维数组来存储 3D 数据等;问题是程序只能在读取数据文件时了解维数。
目前,我将所有数据存储在排名一的数组中,并根据元素的坐标计算该数组中每个元素的索引(此处也建议这样做)。然而,我也读过有关指针等级重新映射的内容,这看起来非常优雅,而且正是我一直在寻找的,因为它允许我放弃数组索引确定的过程(这可能比后面的过程效率低得多)场景)。然而,现在看来我面临着与直接声明多维数组相同的问题 - 如何进行声明?同样,它需要有关排名的信息。
我如何使用指针等级重新映射或其他一些更合适的技术来在运行时设置数组的等级 - 如果这可以完成。或者我最好坚持使用我当前使用的排名一数组?
我想写一个让我使用这个网站的脚本
http://proteinmodel.org/AS2TS/LGA/lga.html
(我需要使用它几百次,我不想手动这样做)
我已经在互联网上搜索了如何使用Perl完成这项工作,我遇到了WWW::Mechanize,这似乎正是我所寻找的.但是现在我发现我想要使用的网站上的表单没有名称 - 它的声明行只是读取
<FORM METHOD="POST" ACTION="./lga-form.cgi" ENCTYPE=multipart/form-data>
Run Code Online (Sandbox Code Playgroud)
起初我尝试简单地不设置我的WWW::Mechanize对象的form_name属性,当我为表单的电子邮件地址字段提供值时,它给了我这个错误消息:
Argument "my_email@address.com" isn't numeric in numeric gt (>) at /usr/share/perl5/WWW/Mechanize.pm line 1618.
Run Code Online (Sandbox Code Playgroud)
然后我尝试设置form_name到''以后' ',但它没有用,我只是得到这个消息:
There is no form named " " at ./automate_LGA.pl line 40
Run Code Online (Sandbox Code Playgroud)
有什么方法可以处理没有名字的表格?如果有人在这里可以回答这个问题,那将是最有帮助的 - 即使答案指向不使用WWW::Mechanize,因为我只是想完成工作,(或多或少)无论如何.
非常感谢提前!