This displays the contents (file names, sizes) of an archive. I track the input (the archive) in `In`. ~~~ 'In var ~~~ The filename is passed in via the command line. Open it, save the pointer. ~~~ #0 script:get-argument file:open-for-reading nip !In ~~~ Define words to process the archive data. ~~~ :get-count @In file:read-line s:to-number dup n:put '_files s:put nl ; :pad s:length #32 swap - #0 n:max [ sp ] times ; :filename @In file:read-line dup s:put pad ; :size @In file:read-line s:to-number dup n:put '_bytes s:put nl ; :skip [ @In file:read drop ] times ; :skip-nl @In file:read-line drop ; ~~~ Then use them to process the file. ~~~ get-count [ filename size skip skip-nl ] times @In file:close ~~~