This module is pretty much copied from a roguelike that I started writing.

example 1:

use Games::Roguelike::Caves;
my $map = generate_cave(50,20);
for (@$map){
    for (@$_){
        print;
    }    
    print "\n"
}
OUTPUT:
                                                  
             ........                     ......  
            ..........         ......    ........ 
        ...............       ........  ......... 
       .................      ................... 
       .................      ..................  
        ................     ...................  
   ..    ...............    ..................... 
  ....    .....  .......    ..................... 
  ....     ...    ......    .......  ............ 
  ....     ...    ......    ....      ........... 
   ..      ....   .....      ..       ........... 
          ......   ....      ..        .........  
      ..........   ....     ...        .........  
    ............    ..     ....       ..........  
   ..............         ......     ......  ..   
   ...............        ......    ......        
    ...     ......         .....    .....         
             ....           ...      ...          
                                                  
example 2:

use Games::Roguelike::Caves;

my $map = generate_cave(50,20);
outline_walls ($map);
for (@$map){
    for (@$_){
        print;
    }    
    print "\n"
}

OUTPUT:
                        |-------------|           
             |---|     |-.............-|          
      |--|  |-...-|    |...............|          
    |--..-||-.....|    |...............|     |--| 
   |-.....--......|    |-......----....-|   |-..-|
   |.............-|     |-....-|  |-....-| |-....|
   |............-|       |-...-|  |-.....---.....|
   |-...........|        |-....----..............|
    |-..........|    |----.......................|
     |-.........|   |-..........................-|
     |-.........|  |-...........................| 
     |.........-|  |............................| 
     |........-|   |...........................-| 
     |........-|   |.......................----|  
     |-........-|  |-.....................-|      
      |---......|   |-...................-|       
         |-.....|    |...................|        
          |....-|    |..................-|        
          |-..-|     |-.............----|         
           |--|       |-------------|             
Ecample 3:
use Games::Roguelike::Caves;
#2 iterations, 50% walls...
my $map = generate_cave(50,20,2,.5,"W",' ');
outline_walls ($map,"W",' ');
for (@$map){
    for (@$_){
        print;
    }    
    print "\n"
}
OUTPUT:
W|---|WW|-----|WW|-|WWWWWW|---|W|----|WWWWWW|--|WW
W|   -||-     -||- |WWWW|--   ---    ----|W|-  |WW
W|    --       --  |WWW|-                --|   |WW
W|-       ---    --|WW|-                   |   |WW
WW|-    --|--    |WWWW|    ---                 |WW
W|--   -||-      ||-|W|-  -|W|         |       -|W
W|     -||      -|- ---   |-----     --|        -|
|-      ||       |       --    |--     |         |
|       --                     -||---            |
|    --                         --|W|            |
|   -||-     ----                 ||-       |    |
|  -|WW|    -|WW|                 --       -|-   |
|------|  --||-----       -----            |W|-  |
W|     |--|W|-    |       -|WW|-----       -||-  |
W|-    |W|--|              -|WWW|--|----    ||   |
W|     ||-  --        --    |WW|-  -|WW|-- -||   |
W|--- -|-             ||   -|WW|    |WWWW|-|W|  -|
WWWW|-||      | | |   ||   |WWW|-   |WWWWWWWW|--|W
WWWWWWW|-     |-|-|---|| --|WWWW|-  |WWWWWWWWWWWWW
WWWWWWWW|-----|WWWWWWWW|-|WWWWWWW|--|WWWWWWWWWWWWW