The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Netscape::Bookmarks - parse, manipulate, or create Netscape Bookmarks files


  use Netscape::Bookmarks;

  # parse an existing file
  my $bookmarks = Netscape::Bookmarks->new( $bookmarks_file );

  # -- OR --
  # start a new Bookmarks structure
  my $bookmarks = Netscape::Bookmarks->new;

  # print a Netscape compatible file
  print $bookmarks->as_string;


[ Note: I wrote this a long time ago. Although this should still work with "Netscape" browsers, Mozilla browsers do the same thing. When the docs say "Netscape", I mean either branch of browsers. ]

The Netscape bookmarks file has several basic components:

        folders (henceforth called categories)

On disk, Netscape browsers store this information in HTML. In the browser, it is displayed under the "Bookmarks" menu. The data can be manipulated through the browser interface.

This module allows one to manipulate the bookmarks file programmatically. One can parse an existing bookmarks file, manipulate the information, and write it as a bookmarks file again. Furthermore, one can skip the parsing step to create a new bookmarks file and write it in the proper format to be used by a Netscape browser.

The Bookmarks module simply parses the bookmarks file passed to it as the only argument to the constructor:

        my $bookmarks = Netscape::Bookmarks->new( $bookmarks_file );

The returned object is a Netscape::Bookmarks::Category object, since the bookmark file is simply a collection of categories that contain any of the components listed above. The top level (i.e. root) category is treated specially and defines the title of the bookmarks file.

HTML::Parser is used behind the scenes to build the data structure (a simple list of lists (of lists ...)). Netscape::Bookmarks::Category, Netscape::Bookmarks::Link, Netscape::Bookmarks::Alias, or Netscape::Bookmarks::Separator objects can be stored in a Netscape::Bookmarks::Category object. Netscape::Bookmarks::Alias objects are treated as references to Netscape::Bookmarks::Link objects, so changes to one affect the other.

Methods for manipulating this object are in the Netscape::Bookmarks::Category module. Methods for dealing with the objects contained in a Netscape::Bookmarks::Category object are in their appropriate modules.

new( [filename] )

The constructor takes a filename as its single (optional) argument. If you do not give new an argument, an empty Netscape::Bookmarks::Category object is returned so that you can start to build up your new Bookmarks file. If the file that you name does not exist, undef is returned in scalar context and an empty list is returned in list context. If the file does exist it is parsed with HTML::Parser with the internal parser subclass defined in the same package as new. If the parsing finishes without error a Netscape::Bookmarks::Category object is returned.


Returns the string representing the top-level class to use in the Bookmarks tree. This is the class of the object that new() returns, and is Netscape::Bookmarks::Category by default. If you override this, you have to follow the Netscape::Bookmarks::Category interface since that's what everything else is expecting.


Method for HTML::Parser subclass method


Method for HTML::Parser subclass method


Method for HTML::Parser subclass method


Method for HTML::Parser subclass method


Method for HTML::Parser subclass method


This source is part of a SourceForge project which always has the latest sources in CVS, as well as all of the previous releases.

If, for some reason, I disappear from the world, one of the other members of the project can shepherd this module appropriately.


Chris Dolan help to quiet some warnings and clean up some rough edges.

Ben Markines fixed up some odd problems I had with references back in my early days (it's a bit embarrassing, actually :)


brian d foy, <>


Copyright (c) 2002-2007 brian d foy. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


HTML::Parser, Netscape::Bookmarks::Category, Netscape::Bookmarks::Link, Netscape::Bookmarks::Alias, Netscape::Bookmarks::Separator.