使用 Perl 6 进行批处理文本
Batch text processing with Perl 6
我正在阅读 Laurent Rosenfeld 和 Allen B. Downey 合着的 Think Perl 6
最近读的很不错
它的 .tex 文件在 github here.
中可用
它有这样的代码示例:
我相信代码块 colored 会非常有用:
为此,我们必须批处理上述存储库中包含的所有 .tex 文件。
为此,我们必须转换乳胶代码:
\begin{verbatim}
say 42 == 42; # True
say 42 == 42.0; # True
say 42 === 42; # True
say 42 === 42.0; # False
\end{verbatim}
\begin{verbatim}
$x eq $y # $x is string-wise equal to $y
$x ne $y # $x is string-wise not equal to $y
$x gt $y # $x is greater than $y (alphabetically after)
$x lt $y # $x is less than $y (alphabetically before)
$x ge $y # $x is greater than or equal to $y
$x le $y # $x is less than or equal to $y
$x eqv $y # $x is truly equivalent to $y
\end{verbatim}
到
\begin{minted}{perl6}
say 42 == 42; # True
say 42 == 42.0; # True
say 42 === 42; # True
say 42 === 42.0; # False
\end{minted}
\begin{minted}{perl6}
$x eq $y # $x is string-wise equal to $y
$x ne $y # $x is string-wise not equal to $y
$x gt $y # $x is greater than $y (alphabetically after)
$x lt $y # $x is less than $y (alphabetically before)
$x ge $y # $x is greater than or equal to $y
$x le $y # $x is less than or equal to $y
$x eqv $y # $x is truly equivalent to $y
\end{minted}
我想用 Perl 6 来完成这个。
这是我打算做的。
THIS IS DUMMY CODE
# First I want to skim all the .tex files in the cloned repo (with git)
for dir("ThinkPerl6/book") ->$file {
say $file if $file~~/\.tex/;
}
# Read each .tex file and modify, replace `\begin{verbatim}` with `\begin{minted}{perl6}`
for "$file.tex".IO.lines -> $line {
substitute with "\begin{minted}{perl6}" if $line ~~/\begin\{verbatim\}/;
}
# Read each .tex file and modify, replace `\end{verbatim}` with `\end{minted}`
for "$file.tex".IO.lines -> $line {
substitute with "\end{minted}" if $line ~~/\end\{verbatim\}/;
}
我不能超越那个。有什么帮助吗?使用正则表达式会很有帮助。
此致,
苏曼
您需要完成以下步骤:
- 为应用了替换的每一行创建一个副本。您可以使用 subst method 作为
- 将修改后的副本写入新文件(可能添加扩展名
.new
左右)
- (可选)移动
.new
以覆盖原始文件。请参阅 this example 以获取灵感。
希望对您有所帮助。
这是莫里茨前两个要点的一个实现。
my $fh-out = open "$file.new.tex", :w; # Create a new file
# Read in old file, line by line
for "$file.tex".IO.lines -> $line is copy {
# Make changes, if needed
$line.=subst('\begin\{verbatim\}','\begin{minted}{perl6}');
$line.=subst('\end\{verbatim\}','\end{minted}');
# Print line to new file
$fh-out.put: $line;
}
我正在阅读 Laurent Rosenfeld 和 Allen B. Downey 合着的 Think Perl 6 最近读的很不错
它的 .tex 文件在 github here.
中可用它有这样的代码示例:
我相信代码块 colored 会非常有用:
为此,我们必须批处理上述存储库中包含的所有 .tex 文件。 为此,我们必须转换乳胶代码:
\begin{verbatim}
say 42 == 42; # True
say 42 == 42.0; # True
say 42 === 42; # True
say 42 === 42.0; # False
\end{verbatim}
\begin{verbatim}
$x eq $y # $x is string-wise equal to $y
$x ne $y # $x is string-wise not equal to $y
$x gt $y # $x is greater than $y (alphabetically after)
$x lt $y # $x is less than $y (alphabetically before)
$x ge $y # $x is greater than or equal to $y
$x le $y # $x is less than or equal to $y
$x eqv $y # $x is truly equivalent to $y
\end{verbatim}
到
\begin{minted}{perl6}
say 42 == 42; # True
say 42 == 42.0; # True
say 42 === 42; # True
say 42 === 42.0; # False
\end{minted}
\begin{minted}{perl6}
$x eq $y # $x is string-wise equal to $y
$x ne $y # $x is string-wise not equal to $y
$x gt $y # $x is greater than $y (alphabetically after)
$x lt $y # $x is less than $y (alphabetically before)
$x ge $y # $x is greater than or equal to $y
$x le $y # $x is less than or equal to $y
$x eqv $y # $x is truly equivalent to $y
\end{minted}
我想用 Perl 6 来完成这个。 这是我打算做的。
THIS IS DUMMY CODE
# First I want to skim all the .tex files in the cloned repo (with git)
for dir("ThinkPerl6/book") ->$file {
say $file if $file~~/\.tex/;
}
# Read each .tex file and modify, replace `\begin{verbatim}` with `\begin{minted}{perl6}`
for "$file.tex".IO.lines -> $line {
substitute with "\begin{minted}{perl6}" if $line ~~/\begin\{verbatim\}/;
}
# Read each .tex file and modify, replace `\end{verbatim}` with `\end{minted}`
for "$file.tex".IO.lines -> $line {
substitute with "\end{minted}" if $line ~~/\end\{verbatim\}/;
}
我不能超越那个。有什么帮助吗?使用正则表达式会很有帮助。
此致,
苏曼
您需要完成以下步骤:
- 为应用了替换的每一行创建一个副本。您可以使用 subst method 作为
- 将修改后的副本写入新文件(可能添加扩展名
.new
左右) - (可选)移动
.new
以覆盖原始文件。请参阅 this example 以获取灵感。
希望对您有所帮助。
这是莫里茨前两个要点的一个实现。
my $fh-out = open "$file.new.tex", :w; # Create a new file
# Read in old file, line by line
for "$file.tex".IO.lines -> $line is copy {
# Make changes, if needed
$line.=subst('\begin\{verbatim\}','\begin{minted}{perl6}');
$line.=subst('\end\{verbatim\}','\end{minted}');
# Print line to new file
$fh-out.put: $line;
}