
These scripts will: Connect to the Perforce server
Retrieve a list of clients (workspaces)
Sort them by last access date (descending order)
1. Prerequisites
Before running the scripts, ensure: Perforce CLI (
p4
) is installed and accessible in PATH
You have Perforce credentials (server, username)
You can run
p4 clients -l
successfully in the command line
2. Ruby Script: List Perforce Clients by Last Access Date
#!/usr/bin/env ruby
# Define Perforce server details
P4PORT = "perforce.company.com:1666"
P4USER = "your_username"
# Run 'p4 clients -l' command and capture output
clients_output = `p4 -p #{P4PORT} -u #{P4USER} clients -l`
# Parse the output and extract client name and access date
clients = []
clients_output.split("\n\n").each do |entry|
client = entry.match(/^Client (\S+)/)&.captures&.first
access_time = entry.match(/^Access:\s+(\d+)/)&.captures&.first.to_i
clients << { name: client, access: access_time } if client && access_time > 0
end
# Sort clients by last access date (descending order)
sorted_clients = clients.sort_by { |c| -c[:access] }
# Print results
puts "Perforce Clients Sorted by Last Access Date (Descending):"
sorted_clients.each do |client|
puts "#{client[:name]} - Last Access: #{Time.at(client[:access])}"
end
How to Run the Ruby Script
Save the script as
list_p4_clients.rb
Replace
"perforce.company.com:1666"
and "your_username"
with your actual Perforce server details Open a terminal and run:
ruby list_p4_clients.rb
3. Perl Script: List Perforce Clients by Last Access Date
#!/usr/bin/perl
use strict;
use warnings;
# Define Perforce server details
my $P4PORT = "perforce.company.com:1666";
my $P4USER = "your_username";
# Run 'p4 clients -l' command and capture output
my @clients_output = `p4 -p $P4PORT -u $P4USER clients -l`;
# Parse output to extract client name and access time
my @clients;
my ($client, $access_time);
foreach my $line (@clients_output) {
if ($line =~ /^Client (\S+)/) {
$client = $1;
} elsif ($line =~ /^Access:\s+(\d+)/) {
$access_time = $1;
push @clients, { name => $client, access => $access_time } if $client && $access_time;
}
}
# Sort clients by last access date (descending order)
@clients = sort { $b->{access} <=> $a->{access} } @clients;
# Print results
print "Perforce Clients Sorted by Last Access Date (Descending):\n";
foreach my $c (@clients) {
my $date = scalar localtime($c->{access});
print "$c->{name} - Last Access: $date\n";
}
How to Run the Perl Script
Save the script as
list_p4_clients.pl
Replace
"perforce.company.com:1666"
and "your_username"
with your actual Perforce server details Open a terminal and run:
perl list_p4_clients.pl
4. Explanation
p4 clients -l
retrieves all client workspaces with detailed info The script extracts the client name and last access date
Clients are sorted in descending order based on last access timestamp
Dates are converted from epoch time to human-readable format
5. Conclusion
This Ruby and Perl script allows you to efficiently list Perforce clients sorted by last access date.
I’m a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I am working at Cotocus. I blog tech insights at DevOps School, travel stories at Holiday Landmark, stock market tips at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at I reviewed , and SEO strategies at Wizbrand.
Please find my social handles as below;
Rajesh Kumar Personal Website
Rajesh Kumar at YOUTUBE
Rajesh Kumar at INSTAGRAM
Rajesh Kumar at X
Rajesh Kumar at FACEBOOK
Rajesh Kumar at LINKEDIN
Rajesh Kumar at PINTEREST
Rajesh Kumar at QUORA
Rajesh Kumar at WIZBRAND