我是 Perl 新手,我发现了我不理解且无法解决的行为。
\n\n我正在制作一个小型查找和替换程序,我需要做一些事情。我有一堆文件需要处理。然后我在外部文本文件中有一个查找/替换规则列表。在替换那里我需要三个特殊的东西:
\n\n替换 utf-8 字符(捷克语变音符号)
添加/删除行(因此在吸食模式下工作)
使用正则表达式
我想要一个单独运行的程序,所以我编写了它,以便它需要三个参数:
\n\n我正在从 bash 脚本循环发送参数,该脚本解析规则列表并加载其他文件。
\n\n我的问题是当我"\\n"
在规则列表中有一个字符串并将其发送到 Perl 脚本时。如果它位于替换的第一部分(在查找部分),它会正确查找换行符,但当它位于第二部分(替换部分)时,它只会打印而\\n
不是换行符。
我尝试将"\\n"
字符串硬编码到变量中,而不是从列表中传递它,然后它工作正常。
Perl 不解释该"\\n"
字符串的原因是什么?我怎样才能让它工作?
这是我的代码:
\n\nlist.txt - 外部替换列表中的一行
\n\n1\\. ?\\\\n?N\xc3\x81ZEV P\xc5\x98\xc3\x8dPRAVKU;\\\\n<<K1>> N\xc3\x81ZEV P\xc5\x98\xc3\x8dPRAVKU;\n
Run Code Online (Sandbox Code Playgroud)\n\nfarkapitoly.shlist.txt
- 用于解析和循环所有文件并调用 Perl 脚本的bash 脚本
...\nFILE="/home/tmp.txt"\nwhile read LINE\ndo\n FIND=`echo "$LINE" | awk -F $\';\' \'BEGIN {OFS …
Run Code Online (Sandbox Code Playgroud) 当一次处理更多对象(但可以选择仅处理一个对象)时,哪种方法更好呢?
A:内部功能循环
可以使用一个或多个对象调用函数,并且该函数在函数内部进行迭代:
class Object:
def __init__(self, a, b):
self.var_a = a
self.var_b = b
var_a = ""
var_b = ""
def func(obj_list):
if type(obj_list) != list:
obj_list = [obj_list]
for obj in obj_list:
# do whatever with an object
print(obj.var_a, obj.var_b)
obj_list = [Object("a1", "a2"), Object("b1", "b2")]
obj_alone = Object("c1", "c2")
func(obj_list)
func(obj_alone)
Run Code Online (Sandbox Code Playgroud)
B:圈外功能
函数仅处理一个对象,并且在处理多个对象时必须多次调用。
class Object:
def __init__(self, a, b):
self.var_a = a
self.var_b = b
var_a = ""
var_b = ""
def func(obj):
# do whatever with …
Run Code Online (Sandbox Code Playgroud)