view release on metacpan or search on metacpan
- Updated to the version in CVS.
- Fixed files missing in the MANIFEST.
- Included all files mentioned in the YAPC::Europe presentation
0.01 Fri Jun 7 09:43:33 2002
- original version; created by h2xs 1.21 with options
-AX -n Algorithm::Evolutionary
view all matches for this distribution
view release on metacpan or search on metacpan
- Updated to the version in CVS.
- Fixed files missing in the MANIFEST.
- Included all files mentioned in the YAPC::Europe presentation
0.01 Fri Jun 7 09:43:33 2002
- original version; created by h2xs 1.21 with options
-AX -n Algorithm::Evolutionary
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/Evolutionary/Op/Easy.pm view on Meta::CPAN
#Reproduce
my @rates = map( $_->{'rate'}, @ops );
my $opWheel = new Algorithm::Evolutionary::Wheel @rates;
#Generate offpring;
my $originalSize = $#popsort; # Just for random choice
for ( my $i = 0; $i < $pringaos; $i ++ ) {
my @offspring;
my $selectedOp = $ops[ $opWheel->spin()];
croak "Problems with selected operator" if !$selectedOp;
for ( my $j = 0; $j < $selectedOp->arity(); $j ++ ) {
my $chosen = $popsort[ int ( rand( $originalSize ) )];
push( @offspring, $chosen ); #No need to clone, it's not changed in ops
}
# p rint "Op ", ref $selectedOp, "\n";
# if ( (ref $selectedOp ) =~ /ssover/ ) {
# print map( $_->{'_str'}."\n", @offspring );
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
my $tag = $self->{_data_id_tags}[$j];
my $data = $self->{_data}->{$tag};
$matrix->set_col($j, $data);
}
if ($self->{_debug}) {
print "\nDisplaying the original data as a matrix:";
display_matrix( $matrix );
}
foreach my $j (0..$num_cols-1) {
$mean_vec += $matrix->col($j);
}
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
die "visualize_clusters() called with wrong args";
}
my $master_datafile = $self->{_datafile};
my @v_mask = split //, $v_mask;
my $visualization_mask_width = @v_mask;
my $original_data_mask = $self->{_mask};
my @mask = split //, $original_data_mask;
my $data_field_width = scalar grep {$_ eq '1'} @mask;
die "\n\nABORTED: The width of the visualization mask (including " .
"all its 1s and 0s) must equal the width of the original mask " .
"used for reading the data file (counting only the 1's)"
if $visualization_mask_width != $data_field_width;
my $visualization_data_field_width = scalar grep {$_ eq '1'} @v_mask;
# The following section is for the superimposed one-Mahalanobis-distance-unit
# ellipses that are shown only for 2D plots:
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
die "visualize_clusters() called with wrong args";
}
my $master_datafile = $self->{_datafile};
my @v_mask = split //, $v_mask;
my $visualization_mask_width = @v_mask;
my $original_data_mask = $self->{_mask};
my @mask = split //, $original_data_mask;
my $data_field_width = scalar grep {$_ eq '1'} @mask;
die "\n\nABORTED: The width of the visualization mask (including " .
"all its 1s and 0s) must equal the width of the original mask " .
"used for reading the data file (counting only the 1's)"
if $visualization_mask_width != $data_field_width;
my $visualization_data_field_width = scalar grep {$_ eq '1'} @v_mask;
if ($visualization_data_field_width == 2) {
foreach my $cluster_index (0..$self->{_K}-1) {
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
} else {
die "visualize_distributions() called with wrong args";
}
my @v_mask = split //, $v_mask;
my $visualization_mask_width = @v_mask;
my $original_data_mask = $self->{_mask};
my @mask = split //, $original_data_mask;
my $data_field_width = scalar grep {$_ eq '1'} @mask;
die "\n\nABORTED: The width of the visualization mask (including " .
"all its 1s and 0s) must equal the width of the original mask " .
"used for reading the data file (counting only the 1's)"
if $visualization_mask_width != $data_field_width;
my $visualization_data_field_width = scalar grep {$_ eq '1'} @v_mask;
if ($visualization_data_field_width == 2) {
foreach my $cluster_index (0..$self->{_K}-1) {
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
} else {
die "visualize_distributions() called with wrong args";
}
my @v_mask = split //, $v_mask;
my $visualization_mask_width = @v_mask;
my $original_data_mask = $self->{_mask};
my @mask = split //, $original_data_mask;
my $data_field_width = scalar grep {$_ eq '1'} @mask;
die "\n\nABORTED: The width of the visualization mask (including " .
"all its 1s and 0s) must equal the width of the original mask " .
"used for reading the data file (counting only the 1's)"
if $visualization_mask_width != $data_field_width;
my $visualization_data_field_width = scalar grep {$_ eq '1'} @v_mask;
if ($visualization_data_field_width == 2) {
foreach my $cluster_index (0..$self->{_K}-1) {
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
}
}
# The method shown below should be called only AFTER you have called the method
# read_data_from_file(). The visualize_data() is meant for the visualization of the
# original data in its various 2D or 3D subspaces.
sub visualize_data {
my $self = shift;
my $v_mask = shift || die "visualization mask missing";
my $master_datafile = $self->{_datafile};
my @v_mask = split //, $v_mask;
my $visualization_mask_width = @v_mask;
my $original_data_mask = $self->{_mask};
my @mask = split //, $original_data_mask;
my $data_field_width = scalar grep {$_ eq '1'} @mask;
die "\n\nABORTED: The width of the visualization mask (including " .
"all its 1s and 0s) must equal the width of the original mask " .
"used for reading the data file (counting only the 1's)"
if $visualization_mask_width != $data_field_width;
my $visualization_data_field_width = scalar grep {$_ eq '1'} @v_mask;
my %visualization_data;
my $data_source = $self->{_data};
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
}
close OUTPUT;
my $plot = Graphics::GnuplotIF->new( persist => 1 );
$plot->gnuplot_cmd( "set noclip" );
$plot->gnuplot_cmd( "set pointsize 2" );
my $plot_title = '"original data provided for EM"';
my $arg_string ;
if ($visualization_data_field_width > 2) {
$arg_string = "\"$temp_file\" using 1:2:3 title $plot_title with points lt -1 pt 1";
} elsif ($visualization_data_field_width == 2) {
$arg_string = "\"$temp_file\" using 1:2 title $plot_title with points lt -1 pt 1";
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
my $self = shift;
my $v_mask = shift || die "visualization mask missing";
my $master_datafile = $self->{_datafile};
my @v_mask = split //, $v_mask;
my $visualization_mask_width = @v_mask;
my $original_data_mask = $self->{_mask};
my @mask = split //, $original_data_mask;
my $data_field_width = scalar grep {$_ eq '1'} @mask;
die "\n\nABORTED: The width of the visualization mask (including " .
"all its 1s and 0s) must equal the width of the original mask " .
"used for reading the data file (counting only the 1's)"
if $visualization_mask_width != $data_field_width;
my $visualization_data_field_width = scalar grep {$_ eq '1'} @v_mask;
my %visualization_data;
my $data_source = $self->{_data};
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
close OUTPUT;
my $plot = Graphics::GnuplotIF->new( persist => 1 );
$plot->gnuplot_cmd( "set noclip" );
$plot->gnuplot_cmd( "set pointsize 2" );
my $plot_title = '"original data provided for EM"';
my $arg_string ;
if ($visualization_data_field_width > 2) {
$arg_string = "\"$temp_file\" using 1:2:3 title $plot_title with points lt -1 pt 1";
} elsif ($visualization_data_field_width == 2) {
$arg_string = "\"$temp_file\" using 1:2 title $plot_title with points lt -1 pt 1";
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
...
# CLUSTER VISUALIZATION:
# You must first set the mask for cluster visualization. This mask tells the
# module which 2D or 3D subspace of the original data space you wish to visualize
# the clusters in:
my $visualization_mask = "111";
$clusterer->visualize_clusters($visualization_mask);
$clusterer->visualize_distributions($visualization_mask);
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
histogram constructed from the projections. Centers of the C<K> largest peaks in
this smoothed histogram are used to seed the KMeans based clusterer. As you'd
expect, the output of the KMeans used to seed the EM algorithm.
This module uses two different criteria to measure the quality of the clustering
achieved. The first is the Minimum Description Length (MDL) proposed originally by
Rissanen (J. Rissanen: "Modeling by Shortest Data Description," Automatica, 1978, and
"A Universal Prior for Integers and Estimation by Minimum Description Length," Annals
of Statistics, 1983.) The MDL criterion is a difference of a log-likelihood term for
all of the observed data and a model-complexity penalty term. In general, both the
log-likelihood and the model-complexity terms increase as the number of clusters
lib/Algorithm/ExpectationMaximization.pm view on Meta::CPAN
$clusterer->visualize_clusters($visualization_mask);
The visualization mask here does not have to be identical to
the one used for clustering, but must be a subset of that
mask. This is convenient for visualizing the clusters in
two- or three-dimensional subspaces of the original space.
The subset is specified by placing `0's in the positions
corresponding to the dimensions you do NOT want to see
through visualization. Depending on the mask used, this
method creates a 2D or a 3D scatter plot of the clusters
obtained through the naive Bayes' classification rule.
view all matches for this distribution
view release on metacpan or search on metacpan
This library implements a simple (C<encoded_blocks>,C<data_blocks>)
erasure code based on Vandermonde matrices. The encoder takes
C<data_blocks> blocks of size C<block_size> each, and is able to produce
up to C<encoded_blocks> different encoded blocks, numbered from C<0>
to C<encoded_blocks-1>, such that any subset of C<data_blocks> members
permits reconstruction of the original data.
Allowed values for C<data_blocks> and C<encoded_blocks> must obey the
following equation:
data_blocks <= encoded_blocks <= MAXBLOCKS
=item $block = $fec->encode ($block_index)
Creates a single encoded block of index C<block_index>, which must be
between C<0> and C<encoded_blocks-1> (inclusive). The blocks from C<0> to
C<data_blocks-1> are simply copies of the original data blocks.
The encoded block is returned as a perl scalar (so the blocks should fit
into memory. If this is a problem for you mail me and I'll make it a file.
=item $fec->set_decode_blocks ([array_of_blocks], [array_of_indices])
Prepares to decode C<data_blocks> of blocks (see C<set_encode_blocks> for
the C<array_of_blocks> parameter).
Since these are not usually the original data blocks, an array of
indices (ranging from C<0> to C<encoded_blocks-1>) must be supplied as
the second arrayref.
Both arrays must have exactly C<data_blocks> entries.
view all matches for this distribution
view release on metacpan or search on metacpan
Revision history for Perl extension Algorithm::FastPermute.
0.01 Fri Aug 24 23:04:02 2001
- original version; created by h2xs 1.1.1.4 with options
-Acn Algorithm::FastPermute
0.02 Mon Aug 27 20:04:28 BST 2001
- bail out if the array is empty
- allocate big enough buffers :-)
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install/Repository.pm view on Meta::CPAN
sub _find_repo {
my ($execute) = @_;
if (-e ".git") {
# TODO support remote besides 'origin'?
if ($execute->('git remote show -n origin') =~ /URL: (.*)$/m) {
# XXX Make it public clone URL, but this only works with github
my $git_url = $1;
$git_url =~ s![\w\-]+\@([^:]+):!git://$1/!;
return $git_url;
} elsif ($execute->('git svn info') =~ /URL: (.*)$/m) {
view all matches for this distribution
view release on metacpan or search on metacpan
0.02 Fri Oct 16 11:27:00 2009
- declare the dependency on constant explicity
for old version of constants.pm (< ver.1.03)
0.01 Fri Oct 2 16:01:05 2009
- original version
view all matches for this distribution
view release on metacpan or search on metacpan
GDiffDelta.pm view on Meta::CPAN
# Pass in two file handles for reading from and one to
# writing the GDIFF binary delta to:
gdiff_delta($orig, $changed, $delta);
# Pass in file handles of original file and GDIFF delta
# to read from, and file to write reconstructed changed
# file to:
gdiff_apply($orig, $delta, $changed);
# A fast adler32 digest implementation is also available:
view all matches for this distribution
view release on metacpan or search on metacpan
0.02 Jul 9, 2012
- update documentation, it was using add_equation instead of
new_equation (bug report by Michael Stahl)
0.01 Wed Nov 30 17:13:48 2011
- original version; created by h2xs 1.23 with options
-AXn Algorithm::GaussianElimination::GF2
view all matches for this distribution
view release on metacpan or search on metacpan
GooglePolylineEncoding.pm view on Meta::CPAN
# nothing to do here, we don't calculate with binary strings...
# 4. Left-shift the binary value one bit:
# 11111101 11011010 10111100 00011110
$number <<= 1;
$number &= 0xffffffff; # to assure 32 bit
# 5. If the original decimal value is negative, invert this encoding:
# 00000010 00100101 01000011 11100001
if ($is_negative) {
$number = (~$number);
$number &= 0xffffffff;
}
GooglePolylineEncoding.pm view on Meta::CPAN
# Temporary variable to hold each ASCII byte.
my $b;
do {
# The `ord(substr($encoded, $index++))` statement returns
# the ASCII code for the character at $index. Subtract 63
# to get the original value. (63 was added to ensure
# proper ASCII characters are displayed in the encoded
# polyline string, which is `human` readable)
$b = ord(substr($encoded, $index++, 1)) - 63;
# AND the bits of the byte with 0x1f to get the original
# 5-bit `chunk. Then left shift the bits by the required
# amount, which increases by 5 bits each time. OR the
# value into $results, which sums up the individual 5-bit
# chunks into the original value. Since the 5-bit chunks
# were reversed in order during encoding, reading them in
# this way ensures proper summation.
$result |= ($b & 0x1f) << $shift;
$shift += 5;
}
GooglePolylineEncoding.pm view on Meta::CPAN
}
# The actual latitude and longitude values were multiplied by
# 1e5 before encoding so that they could be converted to a 32-bit
# integer representation. (With a decimal accuracy of 5 places)
# Convert back to original values.
push @points, {lat => $lat * 1e-5, lon => $lng * 1e-5};
}
@points;
}
view all matches for this distribution
view release on metacpan or search on metacpan
t/01-floyd_warshall.t view on Meta::CPAN
use Storable qw(dclone);
use Algorithm::Graphs::TransitiveClosure::Tiny qw(floyd_warshall);
{
note "Taken from original but with integers as keys";
my $graph = {
0 => {0 => undef},
1 => {1 => undef, 2 => undef, 3 => undef},
2 => {1 => undef, 2 => undef},
3 => {0 => undef, 2 => undef, 3 => undef},
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/Graphs/TransitiveClosure.pm view on Meta::CPAN
This is an implementation of the well known I<Floyd-Warshall> algorithm. [1,2]
The subroutine C<floyd_warshall> takes a directed graph, and calculates
its transitive closure, which will be returned. The given graph is
actually modified, so be sure to pass a copy of the graph to the routine
if you need to keep the original graph.
The subroutine takes graphs in one of the two following formats:
=over
view all matches for this distribution
view release on metacpan or search on metacpan
Revision history for Perl extension Algorithm-HITS.
0.01 Sat, 21 Aug 2004 07:22:53 +0800
- original version
0.02 Sat, 21 Aug 2004 11:52:52 +0800
- corrected my previous moronic computation error
view all matches for this distribution
view release on metacpan or search on metacpan
### Fetch the 2 Hamming codes
$ham_text = unpack("B*",$chars_in);
$ham_text1 = substr($ham_text,0,12);
$ham_text2 = substr($ham_text,12);
### Convert each code into the original byte
($char_out1,$err) = unhamchar($ham_text1);
$err_all += $err;
($char_out2,$err) = unhamchar($ham_text2);
$err_all += $err;
### Fetch the Hamming code
$ham_text = unpack("B*",$chars_in);
$ham_text1 = substr($ham_text,0,12);
### Convert the code to the original byte
($char_out1,$err) = unhamchar($ham_text1);
$err_all += $err;
### Add byte to output
$output .= $char_out1;
Returns the Hamming code from the provided input data.
=item unhamming (SCALAR)
Returns the original data from the provided Hamming code. Single bit errors
are auto corrected.
=item unhamming_err (SCALAR)
Returns the original data from the provided Hamming code, and a number counting
the number of bytes that were corrected. Single bit errors are auto corrected.
=back
=head1 OTHER SUBROUTINES
use Algorithm::Hamming::Perl qw(hamming unhamming);
$data = "Hello";
$hamcode = hamming($data);
$original = unhamming($hamcode);
=head1 LIMITATIONS
This is Perl only and can be slow. The Hamming encoding used can only
repair a single bit error within a byte - ie if two bits are damaged within
view all matches for this distribution
view release on metacpan or search on metacpan
0.02 Sun Aug 26 2018
- Doc fixes
0.01 Sun Aug 26 2018
- original version; created by h2xs 1.23 with options
-A -n Algorithm::Heapify::XS
view all matches for this distribution
view release on metacpan or search on metacpan
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
The precise terms and conditions for copying, distribution and
modification follow.
5. By copying, distributing or modifying the Program (or any work based
on the Program) you indicate your acceptance of this license to do so,
and all its terms and conditions.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the original
licensor to copy, distribute or modify the Program subject to these
terms and conditions. You may not impose any further restrictions on the
recipients' exercise of the rights granted herein.
7. The Free Software Foundation may publish revised and/or new versions
recipients of the item may redistribute it under the same conditions they
received it.
1. You may make and give away verbatim copies of the source form of the
Standard Version of this Package without restriction, provided that you
duplicate all of the original copyright notices and associated disclaimers.
2. You may apply bug fixes, portability fixes and other modifications derived
from the Public Domain or from the Copyright Holder. A Package modified in such
a way shall still be considered the Standard Version.
view all matches for this distribution
view release on metacpan or search on metacpan
Revision history for Perl extension Algorithm::HowSimilar.
0.01 Wed Sep 10 14:54:36 2003
- original version; created by h2xs 1.21 with options
-X Algorithm::HowSimilar
view all matches for this distribution
view release on metacpan or search on metacpan
Please look to the description of C<encode_bitstring> for details.
=item $huff->decode_bitstring($bitstring)
Decodes a bitstring of '1' and '0' to the original string.
Allthough the encoding could be a bit ambigious,
the decoding is alway unambigious.
Please take care that only ones and zeroes are in the bitstring.
The method will die otherwise.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/HyperLogLog/PP.pm view on Meta::CPAN
for my $i ( 0 .. ( $m - 1 ) ) {
$rank = $self->{registers}[$i];
$sum += 1.0 / ( 2.0**$rank );
}
my $estimate = $self->{alphaMM} * ( 1.0 / $sum ); # E in the original paper
if ( $estimate <= 2.5 * $m ) {
my $v = 0;
for my $i ( 0 .. ( $m - 1 ) ) {
if ( $self->{registers}[$i] == 0 ) {
$v++;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Algorithm/IRCSRP2.pm view on Meta::CPAN
L<http://www.bjrn.se/ircsrp/ircsrp.2.0.txt>.
From the specification:
IRCSRP is based on the SRP-6 protocol [3] for password-authenticated key
agreement. While SRP was originally designed for establishing a secure,
authenticated channel between a user and a host, it can be adapted for group
communcations, as described in this document.
See L<https://gitorious.org/ircsrp/ircsrp> for a working version used in Pidgin.
view all matches for this distribution
view release on metacpan or search on metacpan
Revision history for Perl extension Algorithm::InversionList.
0.01 Thu May 1 15:05:39 2003
- original version; created by h2xs 1.21 with options
-X Algorithm::InversionList
view all matches for this distribution
view release on metacpan or search on metacpan
examples/cluster_and_visualize.pl view on Meta::CPAN
# In most cases, you would not change the value of the mask between clustering and
# visualization. But, if you are clustering multi-dimensional data and you wish to
# visualize the projection of of the data on each plane separately, you can do so by
# changing the value of the visualization mask. The number of on bits in the
# visualization must not exceed the number of on bits in the original data mask.
my $vmask = "111"; # for mydatafile1.dat and mydatafile2.dat
#my $vmask = "11"; # for mydatafile3.dat
$clusterer->visualize_clusters( $vmask );
view all matches for this distribution
view release on metacpan or search on metacpan
=head2 --copy=I<suffix>
If this option is given, a copy of each file will be saved with
the given suffix that contains the suggested changes. This does
not require any external programs. Note that this does not
automagially add a dot between the original filename and the
suffix. If you want the dot, you have to include it in the option
argument.
If neither C<--patch> or C<--copy> are given, the default is to
simply print the diffs for each file. This requires either
$self =~ s/^SKIP.*(?=^__DATA__)/SKIP
if (\@ARGV && \$ARGV[0] eq '--unstrip') {
eval { require Devel::PPPort };
\$@ and die "Cannot require Devel::PPPort, please install.\\n";
if (eval \$Devel::PPPort::VERSION < $VERSION) {
die "$0 was originally generated with Devel::PPPort $VERSION.\\n"
. "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n"
. "Please install a newer version, or --unstrip will not work.\\n";
}
Devel::PPPort::WriteFile(\$0);
exit 0;
}
print <<END;
Sorry, but this is a stripped version of \$0.
To be able to use its original script and doc functionality,
please try to regenerate this file using:
\$^X \$0 --unstrip
END
view all matches for this distribution
view release on metacpan or search on metacpan
CONTRIBUTING.md view on Meta::CPAN
```
4. **Make Your Changes**: Write your code. Please adhere to the existing coding style and add comments to new or complex logic.
5. **Test Your Changes**: A pull request is far more likely to be accepted if it includes tests. If you add new functionality, please add a corresponding test case.
6. **Update the Changelog**: Add an entry to the `[Unreleased]` section of `CHANGELOG.md` describing your change.
7. **Submit a Pull Request**: Push your branch to your fork and open a pull request against the `main` branch of the original repository. Please provide a clear description of your changes and link to the relevant issue (e.g., `Fixes #123`).
view all matches for this distribution
view release on metacpan or search on metacpan
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
The precise terms and conditions for copying, distribution and
modification follow.
5. By copying, distributing or modifying the Program (or any work based
on the Program) you indicate your acceptance of this license to do so,
and all its terms and conditions.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the original
licensor to copy, distribute or modify the Program subject to these
terms and conditions. You may not impose any further restrictions on the
recipients' exercise of the rights granted herein.
7. The Free Software Foundation may publish revised and/or new versions
recipients of the item may redistribute it under the same conditions they
received it.
1. You may make and give away verbatim copies of the source form of the
Standard Version of this Package without restriction, provided that you
duplicate all of the original copyright notices and associated disclaimers.
2. You may apply bug fixes, portability fixes and other modifications derived
from the Public Domain or from the Copyright Holder. A Package modified in such
a way shall still be considered the Standard Version.
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/Install/Repository.pm view on Meta::CPAN
sub _find_repo {
my ($execute) = @_;
if (-e ".git") {
# TODO support remote besides 'origin'?
if ($execute->('git remote show -n origin') =~ /URL: (.*)$/m) {
# XXX Make it public clone URL, but this only works with github
my $git_url = $1;
$git_url =~ s![\w\-]+\@([^:]+):!git://$1/!;
return $git_url;
} elsif ($execute->('git svn info') =~ /URL: (.*)$/m) {
view all matches for this distribution
view release on metacpan or search on metacpan
0.03 Fri Oct 16 11:27:00 2009
- declare the dependency on constant explicity
for old version of constants.pm (< ver.1.03)
0.01 Tue Oct 6 10:48:22 2009
- original version
view all matches for this distribution
view release on metacpan or search on metacpan
Revision history for Perl extension Algorithm::Knap01DP.
0.01 Mon May 16 18:27:54 2005
- original version; created by h2xs 1.23 with options
-XA -n Algorithm::Knap01DP
view all matches for this distribution
view release on metacpan or search on metacpan
0.02 Sat Oct 23 14:48:50 EDT 2004
- Bug fix in filesack that caused size not to be printed
0.01 Fri Oct 8 23:34:32 2004
- original version; created by h2xs 1.19
view all matches for this distribution