squid acces.log timestamp olvashatóvá tétele
tail -f access.log | perl -pe 's/\d+/localtime($&)/e'
Ugyanis (számomra ismeretlen okból) az access.log fájlban a bejegyzések időpontja ú.n. Unix time. (érdemes elolvasni a wiki bejegyzést, ha nem tudod, mi ez)
Érdekesség a localtime() viselkedése. Jó, doksiban le van írva, de aki nincs hozzászokva a perl hülyeségeihez, azt érik meglepetések.
Nem mindegy, hogy
Szerintem ez nem volt túl jó ötlet a perl fejlesztőitől, dehát ez van... :)
Update (2020.01.05) :
Végre felfogtam a dolgot most, hogy több mint egy év elteltével újra elővettem a témát és fórumon akartam kérdezni róla. Szóval ez nem a localtime, hanem úgy általában perl sajátosság: alapjáraton megvan, hogy milyen formátumban adja vissza az eredményt a localtime. De... ha egy skaláris változóba teszem a visszaadott értéket, akkor a perl automatikusan végez egy scalar() konverziót.
Szóval a
egyenértékű egy
Ugyanis (számomra ismeretlen okból) az access.log fájlban a bejegyzések időpontja ú.n. Unix time. (érdemes elolvasni a wiki bejegyzést, ha nem tudod, mi ez)
Érdekesség a localtime() viselkedése. Jó, doksiban le van írva, de aki nincs hozzászokva a perl hülyeségeihez, azt érik meglepetések.
Nem mindegy, hogy
print localtime();
vagy
my $a=localtime(); print $a;
Szerintem ez nem volt túl jó ötlet a perl fejlesztőitől, dehát ez van... :)
Update (2020.01.05) :
Végre felfogtam a dolgot most, hogy több mint egy év elteltével újra elővettem a témát és fórumon akartam kérdezni róla. Szóval ez nem a localtime, hanem úgy általában perl sajátosság: alapjáraton megvan, hogy milyen formátumban adja vissza az eredményt a localtime. De... ha egy skaláris változóba teszem a visszaadott értéket, akkor a perl automatikusan végez egy scalar() konverziót.
Szóval a
my $a=localtime(); print $a;
egyenértékű egy
print scalar(localtime());
paranccsal.
Megjegyzések
Megjegyzés küldése