Co trzeba zrobić aby można było wykonywać operacje na pliku podanym na wejściu ? Chodzi mi o to aby skrypt perla nie zawierał odnośnika do konkretnego pliku tylko wykonywał zawarte instrukcje dla jakiegoś pliku podanego akurat przez uzytkownika np. po komunikacie “podaj nazwę pliku” . Dopiero się uczę
Bardzo prosto
my $filename = ... # pobierasz nazwę pliku, powiedzmy, że masz ją w zmiennej $filename
open my $fh, MODE, $filename;
I teraz masz uchwyt $fh do pliku $filename. Po szczegóły dotyczące funkcji open odsyłam pod http://perldoc.perl.org/functions/open.html
Próbowałam tak:
#!/usr/bin/perl
use strict;
use warnings;
print "podaj nazwę pliku:"
my $filename=;
open($a,"<",$filename) or die "nie podano pliku";
my @tablica = <$a>;
foreach (@tablica){
print "to jest zawartość pliku \n $_";
}
close ($a);
i w tym przypadku wyrzuca błąd: syntax error at line 5, near "my " Global symbol “$filename” requires explicit package name at line 5. Global symbol “$filename” requires explicit package name at line 6. oraz tak:
#!/usr/bin/perl
use strict;
use warnings;
print "podaj nazwę pliku:"
open(my $a,"<",STDIN) or die "nie podano pliku";
my @tablica = <$a>;
foreach (@tablica){
print "to jest zawartość pliku \n $_";
}
close ($a);
i to wyrzuca błąd:
syntax error at line 5, near “open”
Co robię źle ?
Brak średnika na końcu 4 linijki w obu przypadkach
Racja po korekcie ten pierwszy skrypt dochodzi do pobrania nazwy z STDIN i wybija “nie podano pliku at line 6, line 1.” mimo, że podaję nazwę pliku, który istnieje. Czemu tak się dzieje?
Pobierając nazwę, w zmiennej zapisuje się też znak nowej linii, możesz użyć http://perldoc.perl.org/functions/chomp.html aby się go pozbyć