
Filtrování dat
Napište program filtrující data ze souborů v passwd(5)
formátu.
Zadání
Ze vstupu ve formátu passwd(5)
vypište všechna uživatelská jména.
Formát výstupu:
Header of the list: usernames in /etc/passwd
===============================================================================
root
bin
daemon
adm
...
timidity
games
===============================================================================
Footer of the list: lines=30
Počet oddělovacích =
musí odpovídat aktuální šířce terminálu.
Vstup programu se bere buď ze souborů zadaných jako argumenty, nebo ze standardního vstupu, nejsou-li zadány žádné použitelné soubory.
Doporučený postup
- Pokud chcete použít předchozí řešení, odstraňte části připomínající jiný skriptovací jazyk.
- Doplňte a vyzkoušejte cyklus řízený operátorem
<>
. - Doplňte část explicitního zpracování souborů:
$filename
,- filehandle
$FILE
nebo klasickým způsobemFILE
, open($FILE, "<", $filename)
,- s chybovým výstupem v případě, že
open
neskončí úspěšně. - Uzavření souboru na konci smyčky
close($FILE) or ..._chybové hlášení_
Tip: Pro výpis jmen souborů z argumentů je možné zkusit použít funkci join()
(perldoc -f join
).
- Vyzkoušejte smyčku
foreach
iwhile
přes@ARGV
. - V případě potřeby první položku pole získáme a z pole odstraníme operátorem
shift @POLE
.
Pro /etc/passwd
, přesměrovaný na standardní vstup, vypíšeme například:
Header of the list: usernames in STDIN
===============================================================================
root
bin
daemon
adm
...
timidity
games
===============================================================================
Footer of the list: lines=30
Pro více souborů, zadaných jako argumenty, vypíšeme například:
Header of the list: usernames in u1 u2 u3
===============================================================================
name1u1
name2u1
name3u1
name4u1
...
name3u3
name4u3
===============================================================================
Footer of the list: lines=12