Mam wiele linii przechowywanych w jednej zmiennej w Perlu.Czytanie ze zmiennej w Perlu
Chciałbym wiedzieć, czy można odczytać te linie za pomocą operatora <>.
Mam wiele linii przechowywanych w jednej zmiennej w Perlu.Czytanie ze zmiennej w Perlu
Chciałbym wiedzieć, czy można odczytać te linie za pomocą operatora <>.
Tak. Jak udokumentowano w dokumencie perldoc -f open
, można otwierać uchwyty plików do zmiennych skalarnych.
my $data = <<'';
line1
line2
line3
open my $fh, '<', \$data;
while (<$fh>) {
chomp;
print "[[ $_ ]]\n";
}
# prints
# [[ line1 ]]
# [[ line2 ]]
# [[ line3 ]]
Jeśli naprawdę musisz, możesz otworzyć do niego uchwyt pliku.
use strict;
use warnings;
my $lines = "one\ntwo\nthree";
open my $fh, "<", \$lines;
while(<$fh>) {
print "line $.: $_";
}
Ewentualnie, jeśli masz już rzeczy w pamięci tak, można po prostu podzielić go na tablicy:
my @lines = split /\n/, $lines; # or whatever
foreach my $line(@lines) {
# do stuff
}
To będzie prawdopodobnie łatwiejsze do odczytania i utrzymać w dół linię.
znalazłem użytecznej alternatywy,
nie używa < > ale działa tak, jakby to robił
for (split /^/, $lines) {
...
}
Możliwym powodem tego jest sztuczka z 'otwartym ARGV, '<', \ $ default_data, chyba że @ ARGV', a następnie czytanie '<>' użyje domyślnych danych, chyba że pliki zostaną przekazane. –