On Mar 22, 9:15 am, "Leslie Viljoen" <leslievilj... / gmail.com> wrote:
> You could change your lines into an array of lines and then remove the
> lines that match:
>
> lines = []
> File.new("text.txt").read.each_line {|line| lines << line }
> lines.delete_if {|line| line =~ /\/usr\/local\/lib/}
Leslie, as a public service announcement, you should be aware of
IO.readlines:
C:\>qri IO.readlines
----------------------------------------------------------
IO::readlines
IO.readlines(name, sep_string=$/) => array
------------------------------------------------------------------------
Reads the entire file specified by _name_ as individual lines,
and
returns those lines in an array. Lines are separated by
_sep_string_.
a = IO.readlines("testfile")
a[0] #=> "This is line one\n"
For that matter, you should also be aware of IO.read:
---------------------------------------------------------------
IO::read
IO.read(name, [length [, offset]] ) => string
------------------------------------------------------------------------
Opens the file, optionally seeks to the given offset, then
returns
_length_ bytes (defaulting to the rest of the file). +read+
ensures
the file is closed before returning.
IO.read("testfile") #=> "This is line one\nThis is
line two\nThis is line three\nAnd so on...\n"
IO.read("testfile", 20) #=> "This is line one\nThi"
IO.read("testfile", 20, 10) #=> "ne one\nThis is line "
You should also be aware of the block form of #open, which opens the
IO object and then closes it when done.
What you wrote creates a new File object and opens it, but never
closes it. I'm not really sure what badness can result from this, but
I gather it's not a good idea.