I don't know where to put this code, because it's a Java
emulation of some of the perl list's common functions.
Even though it's Java, I thought folks might be interested
and/or amused to see where my whimsy takes me.
//package gen.eaglestone.util;
import java.util.*;
/*****************************************************************
*
* PerlList roughly imitates the perl list type, providing
* the following methods:
*
* push( Object scalar )
* push( Object[] array )
* push( PerlList list )
*
* Object pop()
*
* unshift( Object scalar )
* unshift( Object[] array )
* unshift( PerlList list )
*
* Object shift()
*
* # PerlList split( String delims, String scalar )
*
* String join( String joiner )
* # String join( String joiner, PerlList[] lists )
*
* Object $( int index )
*****************************************************************/
public class PerlList extends Vector
{
/*************************************************************
*
* constructors
*
*************************************************************/
public PerlList()
{
super();
}
public PerlList( int cap )
{
super( cap );
}
/*************************************************************
*
* push() and pop()
*
*************************************************************/
public void push( PerlList list )
{
Enumeration elems = list.elements();
while( elems.hasMoreElements() )
addElement( elems.nextElement() );
}
public void push( Object[] elems )
{
for( int i=0; i<elems.length; i++ )
addElement( elems[i] );
}
public void push( Object scalar )
{
addElement( scalar );
}
public Object pop()
{
Object scalar = lastElement();
removeElement( scalar );
return scalar;
}
/*************************************************************
*
* shift() and unshift()
*
*************************************************************/
public Object shift()
{
Object scalar = firstElement();
removeElement( scalar );
return scalar;
}
public void unshift( Object scalar )
{
insertElementAt( scalar, 0 );
}
public void unshift( Object[] elems )
{
for( int i=0; i<elems.length; i++ )
insertElementAt( elems[i], 0 );
}
public void unshift( PerlList list )
{
Enumeration elems = list.elements();
while( elems.hasMoreElements() )
insertElementAt( elems.nextElement(), 0 );
}
/*************************************************************
*
* split() and join()
*
*************************************************************/
public static PerlList split( String delims, String scalar )
{
PerlList l = new PerlList();
StringTokenizer tok = new StringTokenizer( scalar, delims );
while( tok.hasMoreTokens() )
{
l.push( tok.nextToken() );
}
return l;
}
public String join( String joiner )
{
StringBuffer buf = new StringBuffer();
Enumeration elems = elements();
if( elems.hasMoreElements() )
{
buf.append( (String) elems.nextElement() );
}
while( elems.hasMoreElements() )
{
buf.append( joiner );
buf.append( (String) elems.nextElement() );
}
return buf.toString();
}
public static String join( String joiner, PerlList[] list )
{
PerlList nu = new PerlList();
for( int i=0; i<list.length; i++ )
nu.push( list[i] );
return nu.join( joiner );
}
/*************************************************************
*
* default access
*
*************************************************************/
public Object $( int index )
{
return (String) elementAt( index );
}
/*************************************************************
*
* test
*
*************************************************************/
public static void main( String args[] )
{
String a = "abcd 123-4 b ag ag ag x 567";
PerlList pl = PerlList.split( " ", a );
System.out.println( pl.join( "\n" ) );
System.out.println( pl.$(0) );
}
}