perl while (<DATA>) $_的作用是什么
时间: 2024-04-22 20:23:24 浏览: 120
这段代码使用了 while 循环和文件句柄 DATA,其中 "<DATA>" 表示从文件句柄 DATA 中读取数据,而 $_ 则表示当前读取到的一行数据。具体来说,"<DATA>" 表示从文件句柄 DATA 中读取一行数据,并将其赋值给 $_ 变量。while 循环会不断地从文件句柄 DATA 中读取一行数据,并执行循环体中的代码,直到文件句柄 DATA 中的所有数据都被读取完毕。因此,这段代码的作用是逐行读取文件句柄 DATA 中的数据,并对每一行数据执行循环体中的代码。
相关问题
perl 1234567890123456789 使用while (<DATA>) 输出 ‘1234567890123456789
这段代码的作用是读取 `__DATA__` 标记后的数据,使用 `while` 循环逐行读取数据,并将读取到的每一行输出。
因此,如果想要输出 `'1234567890123456789`,只需要在 `__DATA__` 标记后的数据中添加一行 `'1234567890123456789`,例如:
```
__DATA__
'1234567890123456789
```
然后运行程序,就会输出 `'1234567890123456789`。
完整代码如下:
```
perl -ne 'print if /1234567890123456789/' <<'__DATA__'
'1234567890123456789
__DATA__
```
或者在 perl 脚本中使用 `while (<DATA>)` 循环读取数据,例如:
```
#!/usr/bin/perl
use strict;
use warnings;
while (<DATA>) {
print if /1234567890123456789/;
}
__DATA__
'1234567890123456789
```
运行程序,就会输出 `'1234567890123456789`。
perl 1234567890123456789 while (<DATA>){s/^[0-9]{11,}$/'$&/g;print;}__DATA__ 没有结果
这段代码的作用是读取 `__DATA__` 标记后的数据,对其中的每一行进行正则表达式替换,将以 11 位或以上数字开头并且以数字结尾的字符串前面添加单引号,然后输出替换后的结果。
但是,由于正则表达式 `^[0-9]{11,}$` 匹配的是以 11 位或以上数字开头并且以数字结尾的字符串,而在 `__DATA__` 标记后的数据中并没有符合这个条件的字符串,因此程序没有输出结果。
如果想要让程序输出结果,可以在 `__DATA__` 标记后的数据中添加符合正则表达式条件的字符串,例如:
```
12345678901
123456789012
1234567890123
```
这样运行程序就会输出替换后的结果:
```
'12345678901
'123456789012
'1234567890123
```
阅读全文