似乎是一个非常简单的问题,但它让我疯狂。我发现的答案太复杂了。
我需要创建一个基本的降价脚本。我有一行文本文件:
# heading 1
我想从头开始删除“#”,所以我使用正则表达式s /
$i =~ s/^#\s//;
成功! $ i现在读取
heading 1
下一步是添加html标记以使其成为标题。我需要$ i:
<h1>heading 1</h1>
似乎很简单
$i = <h1>$i</h1>;
nope ... perl对使用&lt;&gt;感到疯狂。好的,所以用单引号逃脱它们。
$i = '<h1>'$i'</h1>';
仍然不高兴。而且我现在一直在改变事情和拖延几个小时的答案,以至于我比起初时更加困惑。有人可以解释一下,就像我5是如何让我成为我需要它的字符串。
由于
答案 0 :(得分:2)
只需一次更换即可实现此目的。
my $string = "# heading 1";
$string =~ s/^#\s*(.*)/<h1>$1<\/h1>/;
print $string."\n";
答案 1 :(得分:0)
您需要在双引号字符串中替换:
$i = "<h1>$i</h1>";
或使用字符串连接:
$i = '<h1>' . $i . '</h1>';
答案 2 :(得分:0)
当然,您也可以使用领先的octothorpes数量自动推断出标题级别。
#!/usr/bin/env perl
use strict;
use warnings;
while (my $line = <DATA>) {
next unless $line =~ /\A ([#]{1,6}) \s+ ([^\n]+) $/x;
my $level = length $1;
print "<h$level>$2</h$level>\n";
}
__DATA__
# heading 1
## heading 2
### heading 3
#### heading 4
##### heading 5
###### heading 6
输出:
<h1>heading 1</h1>
<h2>heading 2</h2>
<h3>heading 3</h3>
<h4>heading 4</h4>
<h5>heading 5</h5>
<h6>heading 6</h6>
答案 3 :(得分:-1)
双引号工作正常,没有错误。 我尝试了以下示例
$i = "<h1>Here Comes The Header<\h1>";
print "$i";
output:
<h1>Here Comes Header<h1>
我认为双引号
不会有任何问题