use nqp::readcharsfh on Moar, fix some logic issues