S'il s'agit d'un fichier de log, les lignes sont toujours dans le même ordre et le nombre est uniquement croissant (en fonctionnement normal).
Le moyen le plus simple pourrait être de mémoriser le nombre de lignes et à chaque lecture du fichier de comparer le nouveau nombre. S'il est supérieur au précédent, on affiche les nouvelles lignes.
Attention: le /n est en fait \n
Le moyen le plus simple pourrait être de mémoriser le nombre de lignes et à chaque lecture du fichier de comparer le nouveau nombre. S'il est supérieur au précédent, on affiche les nouvelles lignes.
tcl
set memnb 0
set logfile "/path/to/file"
bind pub - !saylog log:say
proc log:say { nick uhost handle chan args } {
set fp [open $::logfile]
set data [split [read -nonewline $fp] /n]
close $fp
if { [llength $data] > $::memnb } {
set newlines [list [lrange $data $::memnb end]]
foreach line $newline {
putserv "PRIVMSG $chan :$line"
}
set $::memnb [llength $data]
}
return 1
}
Attention: le /n est en fait \n