我有以下文件 data.txt
A
B
C
D
Run Code Online (Sandbox Code Playgroud)
我想把这个文件的内容读成一个Lisp list,比如
(defun read-list-from-file (fn)
(interactive)
(list "A" "B" "C" "D"))
(defun my-read ()
(interactive)
(let (( mylist (read-list-from-file "data.txt")))
(print mylist t)))
Run Code Online (Sandbox Code Playgroud)
我如何修改read-list-from-file它返回相同的列表,而是从作为输入参数给出的文件中读取.文件中的fn每一行应该是列表中的单独项目.
我想在matlab中更改3D绘图的视图,使得y-axis指向上方,z-axis指向左侧.例如,请考虑以下情节:

这里x-axis指向前方,y-axis指向右侧,z-axis指向上方.
我希望将y-axis点向上,而z-axis指向左侧.我试图旋转绘图(使用图形窗口工具栏旋转按钮),但我无法让它工作.(它应该是关于x-axis 的简单90度旋转)
生成图的代码:
membrane
view(100,50)
xlabel('x-axis');
ylabel('y-axis');
zlabel('z-axis');
grid on
Run Code Online (Sandbox Code Playgroud) 参考@_子程序中的元素以避免重复代码是否安全?我也想知道以下是好的做法还是可以简化.我有一个子程序mod_str,它接受一个选项,说明是否应该就地修改字符串参数:
use feature qw(say);
use strict;
use warnings;
my $str = 'abc';
my $mstr = mod_str( $str, in_place => 0 );
say $mstr;
mod_str( $str, in_place => 1 );
say $str;
sub mod_str {
my %opt;
%opt = @_[1..$#_];
if ( $opt{in_place} ) {
$_[0] =~ s/a/A/g;
# .. do more stuff with $_[0]
return;
}
else {
my $str = $_[0];
$str =~ s/a/A/g;
# .. do more stuff with $str
return $str;
}
} …Run Code Online (Sandbox Code Playgroud) 我正在使用该--intent-to-add选项git add轻松添加文件git commit -a.然而,这似乎令人困惑git stash.例如:
git init
touch a
git add a
git commit -m 1
touch b
git add --intent-to-add b
git stash --include-untracked
Run Code Online (Sandbox Code Playgroud)
给出输出git stash:
error: Entry 'b' not uptodate. Cannot merge.
Cannot save the current worktree state
Run Code Online (Sandbox Code Playgroud)
为什么会这样?可以修复吗?
当我运行以下脚本时:
import tkinter as tk
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.figure
import matplotlib.backends.backend_tkagg
import numpy as np
def on_key_event(event, canvas, toolbar):
matplotlib.backend_bases.key_press_handler(event, canvas, toolbar)
matplotlib.use('TkAgg')
root = tk.Tk()
root.wm_title('Test window')
fig = matplotlib.figure.Figure(figsize=(9.333, 7), dpi=100)
a = fig.add_subplot(111)
axes = fig.gca()
x = np.linspace(0, 2*np.pi, 100)
axes.plot(x, np.sin(x), marker='.')
axes.set_title('sin(x)')
axes.grid()
canvas = matplotlib.backends.backend_tkagg.FigureCanvasTkAgg(fig, master=root)
canvas.draw()
canvas.get_tk_widget().pack(fill=tk.X, expand=1)
canvas.mpl_connect(
'key_press_event',
lambda event: on_key_event(event, canvas, toolbar)
)
toolbar = matplotlib.backends.backend_tkagg.NavigationToolbar2TkAgg(
canvas, root
)
toolbar.update()
root.bind('<Control-w>', lambda event: root.destroy())
tk.mainloop() …Run Code Online (Sandbox Code Playgroud) 我想创建一个用户定义的"元音"字符类,它将匹配任何文字英语元音字母(a,e,i,o,u)以及任何这些字母与任何可能的变音符号:ắắ úåų̄ẹ等
这是我试过的,但它不起作用:
> my $vowel = / <[aeiou]> <:Sk>* /
/ <[aeiou]> <:Sk>* /
> "áei" ~~ m:g/ <$vowel> /
(?e? ?i?)
Run Code Online (Sandbox Code Playgroud) 我一直在尝试将Perl5模块加载Data::Printer到Perl6中,但是我很难过.
我之前问过这个问题,不能使用Inline :: Perl5将Perl5模块导入Perl6并从@raiph和Elizabeth那里得到有用的建议,但建议再做一个问题
con@con-VirtualBox:~$ perldoc -lm Data::Printer
/usr/local/share/perl/5.26.0/Data/Printer.pm
con@con-VirtualBox:~$ perl6
To exit type 'exit' or '^D'
> use Inline::Perl5;
Nil
> use lib:from<Perl5> '/usr/local/share/perl/5.26.0/Data/';
Nil
> my @a = 1,2,3,4
[1 2 3 4]
> p @a
===SORRY!=== Error while compiling:
Undeclared routine:
p used at line 1
Run Code Online (Sandbox Code Playgroud)
该p程序应该被加载,然而事实并非如此.
或者,我尝试加载,但这也会产生错误
> use Data::Printer:from<Perl5>
Unsupported type NativeCall::Types::Pointer<94859011731840> in p5_to_p6
in method p5_to_p6_type at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 298
in method unpack_return_values at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line …Run Code Online (Sandbox Code Playgroud) 我试图在Perl6中逐行读取gz文件,但是,我被阻止了:
如何在Perl6中逐行读取gz文件,然而,这个方法,读取所有东西:out使用太多的RAM可用,除非是非常小的文件.
我不明白如何使用Perl6 Compress::Zlib来逐行获取所有内容,尽管我在他们的github上打开了一个问题https://github.com/retupmoca/P6-Compress-Zlib/issues/17
我正在尝试Perl5 Compress::Zlib来翻译这段代码,它在Perl5中完美运行:
Run Code Online (Sandbox Code Playgroud)use Compress::Zlib; my $file = "data.txt.gz"; my $gz = gzopen($file, "rb") or die "Error reading $file: $gzerrno"; while ($gz->gzreadline($_) > 0) { # Process the line read in $_ } die "Error reading $file: $gzerrno" if $gzerrno != Z_STREAM_END ; $gz->gzclose() ;
Inline::Perl5在Perl6中使用这样的东西:
use Compress::Zlib:from<Perl5>;
my $file = 'chrMT.1.vcf.gz';
my $gz = Compress::Zlib::new(gzopen($file, 'r');
while ($gz.gzreadline($_) > 0) {
print $_;
}
$gz.gzclose();
Run Code Online (Sandbox Code Playgroud)
但我看不出如何翻译这个:(
我很困惑Lib :: Archive示例 …
即使$ var不是带有*twigil 的动态变量,此代码也会打印出“ Duo” :
our $var="Duo";
sub sub1() {
say $*var;
}
sub1();
#output is 'Duo'
Run Code Online (Sandbox Code Playgroud)
unit package ABC;在开始处添加a 会导致编译时错误“找不到动态变量$ * var”:
unit package ABC;
our $var="Duo";
sub sub1() {
say $*var;
}
sub1();
# compile time error
Run Code Online (Sandbox Code Playgroud)
在这种情况下,添加* twigil可使变量可访问。
为什么会有所不同?
编辑1:
无论使用或不使用软件包,使用my代替代替our都是编译时错误,即使按照我的理解,这意味着相同的词法范围。
是旨在动态使用,明确声明为这样的变量(就像我可以找到的所有示例一样)。如果是这样,如何our使以上工作?我糊涂了。
编辑2:
我认为以下内容说明了我为何感到困惑:
our $var="non dynamic"; #1
{say $*var;}
our $*var="dynamic"; #2
{say $*var;}
#With #2 commented output is
#non dynamic
#non dynamic
#
#With #2 in …Run Code Online (Sandbox Code Playgroud) 我正在尝试将来自Match对象的块映射到具有可变字符串值的Pairs数组-我想这需要对字符串进行标量处理。我可以通过将它们放在方括号中并为它们建立索引来弄清楚如何做到这一点:
my @n =map { $_.key => [$_.value.Str][0] }, G::parse($str).chunks;
Run Code Online (Sandbox Code Playgroud)
用$(..)标量是无效的,克隆等也无效。必须有一种更规范的方法。为什么$(..)不起作用-不是它的作用是什么?